diff options
author | vantezzen <hello@vantezzen.io> | 2020-06-19 18:51:02 +0200 |
---|---|---|
committer | vantezzen <hello@vantezzen.io> | 2020-06-19 18:51:02 +0200 |
commit | cb312b7523d1b4d6f440a2f6b4443a86691f68f9 (patch) | |
tree | f0165c5599d61f2ba72c97c26ec02fca9211a6a7 | |
parent | Update submodules (diff) | |
parent | Prepare and Release/5.6.0 beta.1 (#820) (diff) | |
download | ferdium-app-cb312b7523d1b4d6f440a2f6b4443a86691f68f9.tar.gz ferdium-app-cb312b7523d1b4d6f440a2f6b4443a86691f68f9.tar.zst ferdium-app-cb312b7523d1b4d6f440a2f6b4443a86691f68f9.zip |
Merge branch 'develop'
79 files changed, 1576 insertions, 916 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc index e5ae29a91..0c891c555 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc | |||
@@ -463,7 +463,8 @@ | |||
463 | "avatar_url": "https://avatars2.githubusercontent.com/u/46404814?v=4", | 463 | "avatar_url": "https://avatars2.githubusercontent.com/u/46404814?v=4", |
464 | "profile": "https://github.com/yourcontact", | 464 | "profile": "https://github.com/yourcontact", |
465 | "contributions": [ | 465 | "contributions": [ |
466 | "code" | 466 | "code", |
467 | "ideas" | ||
467 | ] | 468 | ] |
468 | }, | 469 | }, |
469 | { | 470 | { |
@@ -474,7 +475,10 @@ | |||
474 | "contributions": [ | 475 | "contributions": [ |
475 | "code", | 476 | "code", |
476 | "ideas", | 477 | "ideas", |
477 | "review" | 478 | "review", |
479 | "bug", | ||
480 | "doc", | ||
481 | "userTesting" | ||
478 | ] | 482 | ] |
479 | }, | 483 | }, |
480 | { | 484 | { |
@@ -493,7 +497,11 @@ | |||
493 | "profile": "https://github.com/sampathBlam", | 497 | "profile": "https://github.com/sampathBlam", |
494 | "contributions": [ | 498 | "contributions": [ |
495 | "code", | 499 | "code", |
496 | "review" | 500 | "review", |
501 | "ideas", | ||
502 | "bug", | ||
503 | "doc", | ||
504 | "userTesting" | ||
497 | ] | 505 | ] |
498 | }, | 506 | }, |
499 | { | 507 | { |
@@ -667,6 +675,80 @@ | |||
667 | "contributions": [ | 675 | "contributions": [ |
668 | "translation" | 676 | "translation" |
669 | ] | 677 | ] |
678 | }, | ||
679 | { | ||
680 | "login": "gega7", | ||
681 | "name": "gega7", | ||
682 | "avatar_url": "https://avatars0.githubusercontent.com/u/20799911?v=4", | ||
683 | "profile": "https://github.com/gega7", | ||
684 | "contributions": [ | ||
685 | "bug" | ||
686 | ] | ||
687 | }, | ||
688 | { | ||
689 | "login": "tristanplouz", | ||
690 | "name": "tristanplouz", | ||
691 | "avatar_url": "https://avatars2.githubusercontent.com/u/6893466?v=4", | ||
692 | "profile": "https://github.com/tristanplouz", | ||
693 | "contributions": [ | ||
694 | "code", | ||
695 | "ideas" | ||
696 | ] | ||
697 | }, | ||
698 | { | ||
699 | "login": "dannyqiu", | ||
700 | "name": "Danny Qiu", | ||
701 | "avatar_url": "https://avatars1.githubusercontent.com/u/1170755?v=4", | ||
702 | "profile": "https://github.com/dannyqiu", | ||
703 | "contributions": [ | ||
704 | "code", | ||
705 | "bug" | ||
706 | ] | ||
707 | }, | ||
708 | { | ||
709 | "login": "belyazidi56", | ||
710 | "name": "Youssef Belyazidi", | ||
711 | "avatar_url": "https://avatars3.githubusercontent.com/u/35711540?v=4", | ||
712 | "profile": "https://github.com/belyazidi56", | ||
713 | "contributions": [ | ||
714 | "code" | ||
715 | ] | ||
716 | }, | ||
717 | { | ||
718 | "login": "gabspeck", | ||
719 | "name": "Gabriel Speckhahn", | ||
720 | "avatar_url": "https://avatars2.githubusercontent.com/u/749488?v=4", | ||
721 | "profile": "https://github.com/gabspeck", | ||
722 | "contributions": [ | ||
723 | "platform" | ||
724 | ] | ||
725 | }, | ||
726 | { | ||
727 | "login": "dandelionadia", | ||
728 | "name": "Nadiia Ridko", | ||
729 | "avatar_url": "https://avatars0.githubusercontent.com/u/33199975?v=4", | ||
730 | "profile": "https://github.com/dandelionadia", | ||
731 | "contributions": [ | ||
732 | "code" | ||
733 | ] | ||
734 | }, | ||
735 | { | ||
736 | "login": "janhohner", | ||
737 | "name": "Jan Hohner", | ||
738 | "avatar_url": "https://avatars0.githubusercontent.com/u/649895?v=4", | ||
739 | "profile": "https://hohner.dev", | ||
740 | "contributions": [ | ||
741 | "userTesting" | ||
742 | ] | ||
743 | }, | ||
744 | { | ||
745 | "login": "kris7t", | ||
746 | "name": "Kristóf Marussy", | ||
747 | "avatar_url": "https://avatars1.githubusercontent.com/u/38888?v=4", | ||
748 | "profile": "https://marussy.com", | ||
749 | "contributions": [ | ||
750 | "code" | ||
751 | ] | ||
670 | } | 752 | } |
671 | ], | 753 | ], |
672 | "contributorsPerLine": 6, | 754 | "contributorsPerLine": 6, |
diff --git a/.github/FEATURE_PROPOSAL_TEMPLATE.md b/.github/FEATURE_PROPOSAL_TEMPLATE.md deleted file mode 100644 index e8cdd41ed..000000000 --- a/.github/FEATURE_PROPOSAL_TEMPLATE.md +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | <!--- Provide a general summary of your changes in the Title above --> | ||
2 | |||
3 | ### Feature Description | ||
4 | <!--- Describe your feature in detail --> | ||
5 | |||
6 | ### Motivation and Context | ||
7 | <!--- | ||
8 | * Why is this change required? | ||
9 | * How is this improving the Ferdi experience? | ||
10 | * What problem does it solve? | ||
11 | --> | ||
12 | |||
13 | ### Mockups, Screenshots (if available): | ||
14 | <!--- A picture says more than a thousand words. --> | ||
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index c0ce853ae..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | <!--- Provide a general summary of the issue in the Title above --> | ||
2 | |||
3 | <!-- This repository is only for the Ferdi client. Please use this form ( https://bitly.com/franz-service-request ) for service requests or check out the guide ( https://github.com/meetfranz/plugins ) to create your own service integration. --> | ||
4 | |||
5 | <!--- If you want to propose a feature, use this template: https://raw.githubusercontent.com/meetfranz/franz/master/.github/FEATURE_PROPOSAL_TEMPLATE.md --> | ||
6 | |||
7 | ### Expected Behavior | ||
8 | <!--- If you're describing a bug, tell us what should happen --> | ||
9 | <!--- If you're suggesting a change/improvement, tell us how it should work --> | ||
10 | |||
11 | ### Current Behavior | ||
12 | <!--- If describing a bug, tell us what happens instead of the expected behavior --> | ||
13 | <!--- If suggesting a change/improvement, explain the difference from current behavior --> | ||
14 | |||
15 | ### Screenshots (if appropriate): | ||
16 | |||
17 | ### Possible Solution | ||
18 | <!--- Not obligatory, but suggest a fix/reason for the bug, --> | ||
19 | <!--- or ideas how to implement the addition or change --> | ||
20 | |||
21 | ### Steps to Reproduce (for bugs) | ||
22 | <!--- Provide a link to a live example, or an unambiguous set of steps to --> | ||
23 | <!--- reproduce this bug. Include code to reproduce, if relevant --> | ||
24 | 1. | ||
25 | 2. | ||
26 | 3. | ||
27 | 4. | ||
28 | |||
29 | ### Context | ||
30 | <!--- How has this issue affected you? What are you trying to accomplish? --> | ||
31 | <!--- Providing context helps us come up with a solution that is most useful in the real world --> | ||
32 | |||
33 | ### Your Environment | ||
34 | <!--- Include as many relevant details about the environment you experienced the bug in --> | ||
35 | * Ferdi Version used: | ||
36 | * Operating System and version: | ||
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e206b128f..efad9f6a2 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md | |||
@@ -8,12 +8,11 @@ Please fill our form below, this way we can analyse and fix the problem as fast | |||
8 | Please keep in mind that any text inside "<!--" and "--\>" are comments from us and won't be | 8 | Please keep in mind that any text inside "<!--" and "--\>" are comments from us and won't be |
9 | visible in your bug report, so please don't put any text in them. | 9 | visible in your bug report, so please don't put any text in them. |
10 | --> | 10 | --> |
11 | **Describe the bug** | 11 | **Bug description:** |
12 | <!-- Add a clear and concise description of what the bug is --> | 12 | <!-- Add a clear and concise description of what the bug is --> |
13 | 13 | ||
14 | **To Reproduce** | 14 | **Steps to reproduce:** |
15 | <!-- Explain to us how we can reproduce your bug on our computer --> | 15 | <!-- Explain to us how we can reproduce your bug on our computer --> |
16 | Steps to reproduce the behavior: | ||
17 | 16 | ||
18 | 1. Go to '...' | 17 | 1. Go to '...' |
19 | 2. Click on '....' | 18 | 2. Click on '....' |
@@ -27,27 +26,18 @@ Steps to reproduce the behavior: | |||
27 | <!-- If applicable, add screenshots to help explain your problem. --> | 26 | <!-- If applicable, add screenshots to help explain your problem. --> |
28 | <!-- You can simply drag and drop any image file into the editor to add it to the report --> | 27 | <!-- You can simply drag and drop any image file into the editor to add it to the report --> |
29 | 28 | ||
30 | **Desktop:** | 29 | **Environment:** |
31 | 30 | ||
32 | - OS: [e.g. macOS, Windows 10 etc.] | 31 | - Operating System: <!-- e.g. macOS Catalina, Windows 10, etc. --> |
33 | - Ferdi Version [e.g. 5.4.3] | 32 | - Ferdi Version: <!-- e.g. 5.4.3 --> |
34 | <!-- ℹ You can find Ferdi's version by opening File > About Ferdi or Help > About Ferdi, depending on your Operating System --> | 33 | - Server: <!-- e.g. Ferdi, Franz, Using without an account --> |
35 | - Server Used: [e.g. https://api.getferdi.com] | ||
36 | <!-- ℹ You can find Ferdi's server in Ferdi's settings under "Server". If you self-host or use Ferdi without an account please say so. --> | ||
37 | 34 | ||
35 | - Debug information: | ||
38 | <!-- | 36 | <!-- |
39 | If you are using Ferdi >= 5.4.4-beta.2 please publish your debugging information and share them in your bug report. | 37 | Get your debug information via Ferdi "Help" menu ("Copy/Publish Debug Information") then |
40 | To publish a bug report, inside Ferdi's menu bar click on "Help" > "Publish debug information", accept our terms | 38 | share a debug information file or your published link with us. |
41 | and copy the link given to you. | ||
42 | --> | 39 | --> |
43 | Debug information: https://debug.getferdi.com/... | ||
44 | 40 | ||
45 | **Additional context** | 41 | <!-- Please consider supporting Ferdi! |
46 | <!-- Add any other context about the problem here. --> | 42 | 👉 https://github.com/sponsors/getferdi |
47 | 43 | 👉 https://opencollective.com/getferdi/donate --> | |
48 | <!-- | ||
49 | Love Ferdi? Please consider supporting our open-collective: | ||
50 | 👉 https://opencollective.com/getferdi/donate | ||
51 | or following us on Twitter: | ||
52 | 👉 https://twitter.com/getferdi | ||
53 | --> | ||
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 5535496d2..61353797c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md | |||
@@ -15,5 +15,6 @@ A clear and concise description of any alternative solutions or features you've | |||
15 | **Additional context** | 15 | **Additional context** |
16 | Add any other context or screenshots about the feature request here. | 16 | Add any other context or screenshots about the feature request here. |
17 | 17 | ||
18 | <!-- Love Ferdi? Please consider supporting our collective: | 18 | <!-- Please consider supporting Ferdi! |
19 | 👉 https://github.com/sponsors/getferdi | ||
19 | 👉 https://opencollective.com/getferdi/donate --> | 20 | 👉 https://opencollective.com/getferdi/donate --> |
diff --git a/.github/ISSUE_TEMPLATE/open_issue.md b/.github/ISSUE_TEMPLATE/open_issue.md new file mode 100644 index 000000000..c7c279643 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/open_issue.md | |||
@@ -0,0 +1,8 @@ | |||
1 | --- | ||
2 | name: Open issue | ||
3 | about: For everything that's neither a feature request, nor a bug | ||
4 | --- | ||
5 | |||
6 | <!-- Please consider supporting Ferdi! | ||
7 | 👉 https://github.com/sponsors/getferdi | ||
8 | 👉 https://opencollective.com/getferdi/donate --> | ||
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6c4384695..5a6f95002 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md | |||
@@ -1,28 +1,18 @@ | |||
1 | <!--- Provide a general summary of your changes in the Title above --> | 1 | <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> |
2 | <!-- Please start by naming your pull request properly e.g. "Add Google Tasks to Todo providers". --> | ||
2 | 3 | ||
3 | ### Description | 4 | ### Description |
4 | <!--- Describe your changes in detail --> | 5 | <!-- Describe your changes in detail. --> |
5 | 6 | ||
6 | ### Motivation and Context | 7 | ### Motivation and Context |
7 | <!--- Why is this change required? What problem does it solve? --> | 8 | <!-- Why is this change required? What problem does it solve? --> |
8 | <!--- If it fixes an open issue, please link to the issue here. --> | 9 | <!-- If it fixes an open issue, please link to the issue here. --> |
9 | 10 | ||
10 | ### How Has This Been Tested? | 11 | ### Screenshots |
11 | <!--- Please describe in detail how you tested your changes. --> | 12 | <!-- Remove the section if this does not apply. --> |
12 | <!--- Include details of your testing environment, tests ran to see how --> | ||
13 | <!--- your change affects other areas of the code, etc. --> | ||
14 | |||
15 | ### Screenshots (if appropriate): | ||
16 | |||
17 | ### Types of changes | ||
18 | <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> | ||
19 | - [ ] Bug fix (non-breaking change which fixes an issue) | ||
20 | - [ ] New feature (non-breaking change which adds functionality) | ||
21 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) | ||
22 | 13 | ||
23 | ### Checklist: | 14 | ### Checklist: |
24 | <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> | 15 | <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> |
25 | <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> | 16 | - [ ] My pull request is properly named |
26 | - [ ] My code follows the code style of this project (run `$ yarn lint`). | 17 | - [ ] The changes respect the code style of the project (`$ npm run lint`) |
27 | <!---- [ ] My change requires a change to the documentation. | 18 | - [ ] I tested/previewed my changes locally \ No newline at end of file |
28 | - [ ] I have updated the documentation accordingly. --> | ||
diff --git a/.github/issue_label_bot.yaml b/.github/issue_label_bot.yaml new file mode 100644 index 000000000..bc1c64d59 --- /dev/null +++ b/.github/issue_label_bot.yaml | |||
@@ -0,0 +1,2 @@ | |||
1 | label-alias: | ||
2 | feature_request: 'enhancement' | ||
diff --git a/.travis.yml b/.travis.yml index 7579878b7..29d31c4a8 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -12,7 +12,7 @@ matrix: | |||
12 | - libxkbfile-dev | 12 | - libxkbfile-dev |
13 | - rpm | 13 | - rpm |
14 | - os: osx | 14 | - os: osx |
15 | if: branch = release | 15 | if: branch IN (nightly, release) |
16 | osx_image: xcode11 | 16 | osx_image: xcode11 |
17 | 17 | ||
18 | language: node_js | 18 | language: node_js |
@@ -22,6 +22,7 @@ branches: | |||
22 | only: | 22 | only: |
23 | - develop | 23 | - develop |
24 | - release | 24 | - release |
25 | - nightly | ||
25 | cache: npm | 26 | cache: npm |
26 | 27 | ||
27 | before_install: | 28 | before_install: |
@@ -34,6 +35,14 @@ before_script: | |||
34 | script: | 35 | script: |
35 | - | | 36 | - | |
36 | if [ $TRAVIS_BRANCH == "release" ]; then | 37 | if [ $TRAVIS_BRANCH == "release" ]; then |
37 | travis_retry travis_wait 100 npm run build | 38 | travis_retry travis_wait 100 npm run build |
39 | fi | ||
40 | - | | ||
41 | if [ $TRAVIS_BRANCH == "nightly" ]; then | ||
42 | npm version prerelease --preid=nightly -m "%s [skip ci]" | ||
43 | travis_retry travis_wait 100 npm run build -- --publish always -c.publish.provider=github -c.publish.owner=getferdi -c.publish.repo=nightlies | ||
44 | if [ $TRAVIS_OS_NAME == "osx" ]; then | ||
45 | git remote add nightly https://${GH_TOKEN}@github.com/getferdi/ferdi.git > /dev/null 2>&1 | ||
46 | git push --quiet --set-upstream nightly HEAD:nightly >/dev/null 2>&1 | ||
47 | fi | ||
38 | fi | 48 | fi |
39 | |||
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e573ea76..d36e75ed9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -1,6 +1,34 @@ | |||
1 | # [5.6.0-beta.1](https://github.com/getferdi/ferdi/compare/v5.5.0...v5.6.0-beta.1) (2020-06-14) | ||
2 | |||
3 | ### Features | ||
4 | - Make the notifications badge work with LauncherAPI-compliant (#736) 💖 @gabspeck | ||
5 | |||
6 | ### Minor changes | ||
7 | - Update node-sass to 4.14.0 for compatibility with Node 14.x (#656) 💖 @dpeukert | ||
8 | - Change Keyboard shortcut tooltip text in Sidebar for Settings (#665) 💖 @sampathBlam | ||
9 | - Restore "delete service" option in sidebar (#692) 💖 @sampathBlam | ||
10 | - Add Google Tasks to Todo providers (#695) 💖 @dannyqiu | ||
11 | - Restore window last closed maximize/fullscreen state (#733) 💖 @dannyqiu | ||
12 | - Add password hashing to lock password (#694) | ||
13 | - Close/open window when clicking on tray menu item (#630) 💖 @dandelionadia | ||
14 | - Use Tray popUpContextMenu on macOS/Windows only (#741) | ||
15 | - Setup nightly releases deployment pipeline (#730) | ||
16 | - Make Tray icons more robust on Linux (#748) 💖 @kris7t | ||
17 | - Load disable hibernation per service status on startup (#754) 💖 @kris7t | ||
18 | - Update global user agent to conform with spec (#779) 💖 @dannyqiu | ||
19 | |||
20 | ### Bug Fixes | ||
21 | - Prevent unnecessary electron popup windows for links (#685) 💖 @mahadevans87 | ||
22 | - Refactor locking feature (#693) | ||
23 | - Review launch on startup for macOS, start Ferdi app, not renderer (#696) 💖 @dannyqiu | ||
24 | - Fix TodosWebview user agent (#713) 💖 @mahadevans87 | ||
25 | - Fix crash when using Password Lock with TouchID API unavailable (#737) 💖 @mahadevans87 | ||
26 | - Fix setting of webview disablewebsecurity attribute (#772) 💖 @dannyqiu | ||
27 | |||
1 | # [5.5.0](https://github.com/getferdi/ferdi/compare/v5.4.3...v5.5.0) (2020-04-26) | 28 | # [5.5.0](https://github.com/getferdi/ferdi/compare/v5.4.3...v5.5.0) (2020-04-26) |
2 | ### Features | 29 | ### Features |
3 | - Merge Franz 5.5.0-beta.2 | 30 | - Merge Franz 5.5.0-beta.2 |
31 | - Add modifyRequestHeaders, enable properly setting headers for services (#639), 💖 @mahadevans87 @sampathBlam | ||
4 | - Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact | 32 | - Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact |
5 | - Add hotkey for darkmode (#530, #537), 💖 @Room4O4 & @mahadevans87 | 33 | - Add hotkey for darkmode (#530, #537), 💖 @Room4O4 & @mahadevans87 |
6 | - Add option to start Ferdi minimized (#490, #534) | 34 | - Add option to start Ferdi minimized (#490, #534) |
@@ -13,7 +13,9 @@ | |||
13 | 13 | ||
14 | <p align="center"> | 14 | <p align="center"> |
15 | <img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=Downloads&logo=iCloud&logoColor=%23FFFFFF"> | 15 | <img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=Downloads&logo=iCloud&logoColor=%23FFFFFF"> |
16 | <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --><a href='#contributors-'><img src='https://img.shields.io/badge/contributors-67-default.svg?logo=github' alt='Contributors'/></a><!-- ALL-CONTRIBUTORS-BADGE:END --> | 16 | <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> |
17 | <a href='#contributors-'><img src='https://img.shields.io/badge/contributors-75-default.svg?logo=github' alt='Contributors'/></a> | ||
18 | <!-- ALL-CONTRIBUTORS-BADGE:END --> | ||
17 | <a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a> | 19 | <a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a> |
18 | <a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a> | 20 | <a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a> |
19 | <a href="https://ci.appveyor.com/project/kytwb/ferdi"><img alt="Build Status Windows" src="https://img.shields.io/appveyor/ci/kytwb/ferdi/master?logo=appveyor"></a> | 21 | <a href="https://ci.appveyor.com/project/kytwb/ferdi"><img alt="Build Status Windows" src="https://img.shields.io/appveyor/ci/kytwb/ferdi/master?logo=appveyor"></a> |
@@ -280,18 +282,33 @@ Deliverables will be available in the `out` folder. | |||
280 | 282 | ||
281 | ### Release | 283 | ### Release |
282 | 284 | ||
285 | Create a new [draft release](https://github.com/getferdi/ferdi/releases/new) that targets the `release` branch, then: | ||
286 | |||
283 | ```bash | 287 | ```bash |
284 | $ git checkout develop && git pull | 288 | $ git checkout develop && git pull |
289 | $ git checkout release | ||
285 | $ git submodule update --remote --force | 290 | $ git submodule update --remote --force |
286 | $ git add . | 291 | $ git add . |
287 | $ git commit -m "Update submodules" | 292 | $ git commit -m "Update submodules" |
288 | $ git checkout master | ||
289 | $ git merge --no-ff develop | 293 | $ git merge --no-ff develop |
290 | $ git tag v5.3.4-beta.4 | 294 | $ git push |
291 | $ git push --tags | ||
292 | ``` | 295 | ``` |
293 | 296 | ||
294 | When pushing a new tag, the CI builds will create a draft GitHub release and upload the deliverables in the draft release assets. Wait for all the assets to be uploaded before publishing the draft release. | 297 | Once the draft release assets are uploaded (13 assets), publish the release. The last commit of the `release` branch will be tagged. You can then merge `release` into `master` and back into `develop` if needed. |
298 | |||
299 | #### Nightly | ||
300 | |||
301 | ```bash | ||
302 | $ git checkout develop && git pull | ||
303 | $ git checkout nightly | ||
304 | $ git submodule update --remote --force | ||
305 | $ git add . | ||
306 | $ git commit -m "Update submodules" | ||
307 | $ git merge --no-ff develop | ||
308 | $ git push | ||
309 | ``` | ||
310 | |||
311 | The draft release and assets will be available in [getferdi/nightlies releases](https://github.com/getferdi/nightlies/releases). You need to manually publish the draft release as a pre-release for now. | ||
295 | 312 | ||
296 | ## Contributors ✨ | 313 | ## Contributors ✨ |
297 | 314 | ||
@@ -302,95 +319,105 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d | |||
302 | <!-- markdownlint-disable --> | 319 | <!-- markdownlint-disable --> |
303 | <table> | 320 | <table> |
304 | <tr> | 321 | <tr> |
305 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt="Bennett"/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Code">💻</a> <a href="#design-vantezzen" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Documentation">📖</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">🤔</a> <a href="#translation-vantezzen" title="Translation">ðŸŒ</a> <a href="#example-vantezzen" title="Examples">💡</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Avantezzen" title="Bug reports">ðŸ›</a> <a href="#content-vantezzen" title="Content">🖋</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-vantezzen" title="User Testing">📓</a> <a href="#question-vantezzen" title="Answering Questions">💬</a> <a href="#projectManagement-vantezzen" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Avantezzen" title="Reviewed Pull Requests">👀</a></td> | 322 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt=""/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Code">💻</a> <a href="#design-vantezzen" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Documentation">📖</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">🤔</a> <a href="#translation-vantezzen" title="Translation">ðŸŒ</a> <a href="#example-vantezzen" title="Examples">💡</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Avantezzen" title="Bug reports">ðŸ›</a> <a href="#content-vantezzen" title="Content">🖋</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-vantezzen" title="User Testing">📓</a> <a href="#question-vantezzen" title="Answering Questions">💬</a> <a href="#projectManagement-vantezzen" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Avantezzen" title="Reviewed Pull Requests">👀</a></td> |
306 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt="Amine Mouafik"/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Code">💻</a> <a href="#design-kytwb" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Documentation">📖</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Akytwb" title="Bug reports">ðŸ›</a> <a href="#content-kytwb" title="Content">🖋</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-kytwb" title="User Testing">📓</a> <a href="#question-kytwb" title="Answering Questions">💬</a> <a href="#projectManagement-kytwb" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Akytwb" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-kytwb" title="Maintenance">🚧</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">📦</a> <a href="#fundingFinding-kytwb" title="Funding Finding">ðŸ”</a> <a href="#blog-kytwb" title="Blogposts">ðŸ“</a> <a href="#translation-kytwb" title="Translation">ðŸŒ</a></td> | 323 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt=""/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Code">💻</a> <a href="#design-kytwb" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Documentation">📖</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Akytwb" title="Bug reports">ðŸ›</a> <a href="#content-kytwb" title="Content">🖋</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-kytwb" title="User Testing">📓</a> <a href="#question-kytwb" title="Answering Questions">💬</a> <a href="#projectManagement-kytwb" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Akytwb" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-kytwb" title="Maintenance">🚧</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">📦</a> <a href="#fundingFinding-kytwb" title="Funding Finding">ðŸ”</a> <a href="#blog-kytwb" title="Blogposts">ðŸ“</a> <a href="#translation-kytwb" title="Translation">ðŸŒ</a></td> |
307 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt="Stefan Malzner"/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Code">💻</a> <a href="#content-adlk" title="Content">🖋</a> <a href="#design-adlk" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Documentation">📖</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#projectManagement-adlk" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Tests">âš ï¸</a> <a href="#translation-adlk" title="Translation">ðŸŒ</a></td> | 324 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt=""/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Code">💻</a> <a href="#content-adlk" title="Content">🖋</a> <a href="#design-adlk" title="Design">🎨</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Documentation">📖</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#projectManagement-adlk" title="Project Management">📆</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Tests">âš ï¸</a> <a href="#translation-adlk" title="Translation">ðŸŒ</a></td> |
308 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt="Makazzz"/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3AMakazzz" title="Bug reports">ðŸ›</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Code">💻</a> <a href="#translation-Makazzz" title="Translation">ðŸŒ</a> <a href="#content-Makazzz" title="Content">🖋</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Documentation">📖</a> <a href="#platform-Makazzz" title="Packaging/porting to new platform">📦</a></td> | 325 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt=""/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3AMakazzz" title="Bug reports">ðŸ›</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Code">💻</a> <a href="#translation-Makazzz" title="Translation">ðŸŒ</a> <a href="#content-Makazzz" title="Content">🖋</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Documentation">📖</a> <a href="#platform-Makazzz" title="Packaging/porting to new platform">📦</a></td> |
309 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt="ZeroCool"/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=ZeroCool940711" title="Code">💻</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">🤔</a></td> | 326 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt=""/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=ZeroCool940711" title="Code">💻</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">🤔</a></td> |
310 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt="rseitbekov"/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=rseitbekov" title="Code">💻</a></td> | 327 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt=""/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=rseitbekov" title="Code">💻</a></td> |
328 | </tr> | ||
329 | <tr> | ||
330 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt=""/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Abittner" title="Bug reports">ðŸ›</a></td> | ||
331 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt=""/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">ðŸ›</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
332 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt=""/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
333 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt=""/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
334 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt=""/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adayzlun" title="Bug reports">ðŸ›</a></td> | ||
335 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt=""/><br /><sub><b>Tobias Günther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
311 | </tr> | 336 | </tr> |
312 | <tr> | 337 | <tr> |
313 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt="Peter Bittner"/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Abittner" title="Bug reports">ðŸ›</a></td> | 338 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt=""/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">📦</a></td> |
314 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt="Justus Saul"/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">ðŸ›</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">🤔</a></td> | 339 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt=""/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Documentation">📖</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">📦</a></td> |
315 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt="igreil"/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">🤔</a></td> | 340 | <td align="center"><a href="https://github.com/Gaboris"><img src="https://avatars2.githubusercontent.com/u/9462372?v=4" width="40px;" alt=""/><br /><sub><b>Gaboris</b></sub></a><br /><a href="#question-Gaboris" title="Answering Questions">💬</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AGaboris" title="Bug reports">ðŸ›</a></td> |
316 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt="Marco Lopes"/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">🤔</a></td> | 341 | <td align="center"><a href="http://www.cu3ed.com/"><img src="https://avatars1.githubusercontent.com/u/61343?v=4" width="40px;" alt=""/><br /><sub><b>Ce</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aincace" title="Bug reports">ðŸ›</a></td> |
317 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt="dayzlun"/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adayzlun" title="Bug reports">ðŸ›</a></td> | 342 | <td align="center"><a href="http://pztrn.name/"><img src="https://avatars1.githubusercontent.com/u/869402?v=4" width="40px;" alt=""/><br /><sub><b>Stanislav N.</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Apztrn" title="Bug reports">ðŸ›</a></td> |
318 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt="Tobias Günther"/><br /><sub><b>Tobias Günther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">🤔</a></td> | 343 | <td align="center"><a href="http://www.patrickcurl.com"><img src="https://avatars1.githubusercontent.com/u/1470061?v=4" width="40px;" alt=""/><br /><sub><b>Patrick Curl</b></sub></a><br /><a href="#ideas-patrickcurl" title="Ideas, Planning, & Feedback">🤔</a></td> |
319 | </tr> | 344 | </tr> |
320 | <tr> | 345 | <tr> |
321 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt="AGCaesar"/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">📦</a></td> | 346 | <td align="center"><a href="https://github.com/Stanzilla"><img src="https://avatars3.githubusercontent.com/u/75278?v=4" width="40px;" alt=""/><br /><sub><b>Benjamin Staneck</b></sub></a><br /><a href="#design-Stanzilla" title="Design">🎨</a></td> |
322 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt="xthursdayx"/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Documentation">📖</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">📦</a></td> | 347 | <td align="center"><a href="https://github.com/ammarmalhas"><img src="https://avatars1.githubusercontent.com/u/57057209?v=4" width="40px;" alt=""/><br /><sub><b>ammarmalhas</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aammarmalhas" title="Bug reports">ðŸ›</a> <a href="#security-ammarmalhas" title="Security">🛡ï¸</a></td> |
323 | <td align="center"><a href="https://github.com/Gaboris"><img src="https://avatars2.githubusercontent.com/u/9462372?v=4" width="40px;" alt="Gaboris"/><br /><sub><b>Gaboris</b></sub></a><br /><a href="#question-Gaboris" title="Answering Questions">💬</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AGaboris" title="Bug reports">ðŸ›</a></td> | 348 | <td align="center"><a href="https://github.com/steliyan"><img src="https://avatars1.githubusercontent.com/u/1850292?v=4" width="40px;" alt=""/><br /><sub><b>Steliyan Stoyanov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=steliyan" title="Code">💻</a> <a href="#ideas-steliyan" title="Ideas, Planning, & Feedback">🤔</a></td> |
324 | <td align="center"><a href="http://www.cu3ed.com/"><img src="https://avatars1.githubusercontent.com/u/61343?v=4" width="40px;" alt="Ce"/><br /><sub><b>Ce</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aincace" title="Bug reports">ðŸ›</a></td> | 349 | <td align="center"><a href="https://github.com/brorbw"><img src="https://avatars2.githubusercontent.com/u/5909562?v=4" width="40px;" alt=""/><br /><sub><b>Bror Winther</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=brorbw" title="Documentation">📖</a></td> |
325 | <td align="center"><a href="http://pztrn.name/"><img src="https://avatars1.githubusercontent.com/u/869402?v=4" width="40px;" alt="Stanislav N."/><br /><sub><b>Stanislav N.</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Apztrn" title="Bug reports">ðŸ›</a></td> | 350 | <td align="center"><a href="https://fwdekker.com/"><img src="https://avatars0.githubusercontent.com/u/13442533?v=4" width="40px;" alt=""/><br /><sub><b>Felix W. Dekker</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=FWDekker" title="Documentation">📖</a></td> |
326 | <td align="center"><a href="http://www.patrickcurl.com"><img src="https://avatars1.githubusercontent.com/u/1470061?v=4" width="40px;" alt="Patrick Curl"/><br /><sub><b>Patrick Curl</b></sub></a><br /><a href="#ideas-patrickcurl" title="Ideas, Planning, & Feedback">🤔</a></td> | 351 | <td align="center"><a href="https://github.com/Sauceee"><img src="https://avatars2.githubusercontent.com/u/17987941?v=4" width="40px;" alt=""/><br /><sub><b>Sauceee</b></sub></a><br /><a href="#design-Sauceee" title="Design">🎨</a></td> |
327 | </tr> | 352 | </tr> |
328 | <tr> | 353 | <tr> |
329 | <td align="center"><a href="https://github.com/Stanzilla"><img src="https://avatars3.githubusercontent.com/u/75278?v=4" width="40px;" alt="Benjamin Staneck"/><br /><sub><b>Benjamin Staneck</b></sub></a><br /><a href="#design-Stanzilla" title="Design">🎨</a></td> | 354 | <td align="center"><a href="http://lhw.ring0.de"><img src="https://avatars2.githubusercontent.com/u/351875?v=4" width="40px;" alt=""/><br /><sub><b>Lennart Weller</b></sub></a><br /><a href="#platform-lhw" title="Packaging/porting to new platform">📦</a></td> |
330 | <td align="center"><a href="https://github.com/ammarmalhas"><img src="https://avatars1.githubusercontent.com/u/57057209?v=4" width="40px;" alt="ammarmalhas"/><br /><sub><b>ammarmalhas</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aammarmalhas" title="Bug reports">ðŸ›</a> <a href="#security-ammarmalhas" title="Security">🛡ï¸</a></td> | 355 | <td align="center"><a href="https://github.com/jereksel"><img src="https://avatars0.githubusercontent.com/u/1307829?v=4" width="40px;" alt=""/><br /><sub><b>Andrzej Ressel</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=jereksel" title="Code">💻</a></td> |
331 | <td align="center"><a href="https://github.com/steliyan"><img src="https://avatars1.githubusercontent.com/u/1850292?v=4" width="40px;" alt="Steliyan Stoyanov"/><br /><sub><b>Steliyan Stoyanov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=steliyan" title="Code">💻</a> <a href="#ideas-steliyan" title="Ideas, Planning, & Feedback">🤔</a></td> | 356 | <td align="center"><a href="https://gitlab.com/dpeukert"><img src="https://avatars2.githubusercontent.com/u/3451904?v=4" width="40px;" alt=""/><br /><sub><b>Daniel Peukert</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=dpeukert" title="Code">💻</a></td> |
332 | <td align="center"><a href="https://github.com/brorbw"><img src="https://avatars2.githubusercontent.com/u/5909562?v=4" width="40px;" alt="Bror Winther"/><br /><sub><b>Bror Winther</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=brorbw" title="Documentation">📖</a></td> | 357 | <td align="center"><a href="https://crowdin.com/profile/Ali_Shiple"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12895436/small/00917d09ca1b4b6d8e0ef36af07ecf6b.jpg" width="40px;" alt=""/><br /><sub><b>Ali M. Shiple</b></sub></a><br /><a href="#translation-Ali_Shiple" title="Translation">ðŸŒ</a></td> |
333 | <td align="center"><a href="https://fwdekker.com/"><img src="https://avatars0.githubusercontent.com/u/13442533?v=4" width="40px;" alt="Felix W. Dekker"/><br /><sub><b>Felix W. Dekker</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=FWDekker" title="Documentation">📖</a></td> | 358 | <td align="center"><a href="https://crowdin.com/profile/elviseras"><img src="https://www.gravatar.com/avatar/25c2cf0d8cb4a4141e71c3b8a2e9324f" width="40px;" alt=""/><br /><sub><b>elviseras</b></sub></a><br /><a href="#translation-elviseras" title="Translation">ðŸŒ</a></td> |
334 | <td align="center"><a href="https://github.com/Sauceee"><img src="https://avatars2.githubusercontent.com/u/17987941?v=4" width="40px;" alt="Sauceee"/><br /><sub><b>Sauceee</b></sub></a><br /><a href="#design-Sauceee" title="Design">🎨</a></td> | 359 | <td align="center"><a href="https://crowdin.com/profile/J370"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14141203/small/7b12b5db419d8796450221c2eaaf6003.png" width="40px;" alt=""/><br /><sub><b>J370</b></sub></a><br /><a href="#translation-J370" title="Translation">ðŸŒ</a></td> |
335 | </tr> | 360 | </tr> |
336 | <tr> | 361 | <tr> |
337 | <td align="center"><a href="http://lhw.ring0.de"><img src="https://avatars2.githubusercontent.com/u/351875?v=4" width="40px;" alt="Lennart Weller"/><br /><sub><b>Lennart Weller</b></sub></a><br /><a href="#platform-lhw" title="Packaging/porting to new platform">📦</a></td> | 362 | <td align="center"><a href="https://crowdin.com/profile/keunes"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13018172/small/829115c606347b10218f34c637a2100c.png" width="40px;" alt=""/><br /><sub><b>Koen</b></sub></a><br /><a href="#translation-keunes" title="Translation">ðŸŒ</a></td> |
338 | <td align="center"><a href="https://github.com/jereksel"><img src="https://avatars0.githubusercontent.com/u/1307829?v=4" width="40px;" alt="Andrzej Ressel"/><br /><sub><b>Andrzej Ressel</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=jereksel" title="Code">💻</a></td> | 363 | <td align="center"><a href="https://crowdin.com/profile/leandrogehlen"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14099621/small/1d9503523839c310dbce0af3c226e894.jpeg" width="40px;" alt=""/><br /><sub><b>Leandro Gehlen</b></sub></a><br /><a href="#translation-leandrogehlen" title="Translation">ðŸŒ</a></td> |
339 | <td align="center"><a href="https://gitlab.com/dpeukert"><img src="https://avatars2.githubusercontent.com/u/3451904?v=4" width="40px;" alt="Daniel Peukert"/><br /><sub><b>Daniel Peukert</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=dpeukert" title="Code">💻</a></td> | 364 | <td align="center"><a href="https://crowdin.com/profile/Matthieu42"><img src="https://www.gravatar.com/avatar/735217ccccf11ba97573deee517ddb19" width="40px;" alt=""/><br /><sub><b>Matthieu42</b></sub></a><br /><a href="#translation-Matthieu42" title="Translation">ðŸŒ</a></td> |
340 | <td align="center"><a href="https://crowdin.com/profile/Ali_Shiple"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12895436/small/00917d09ca1b4b6d8e0ef36af07ecf6b.jpg" width="40px;" alt="Ali M. Shiple"/><br /><sub><b>Ali M. Shiple</b></sub></a><br /><a href="#translation-Ali_Shiple" title="Translation">ðŸŒ</a></td> | 365 | <td align="center"><a href="https://crowdin.com/profile/nicky18013"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13468928/small/2b31e7ac19645d950a79b33ffd5721b8.png" width="40px;" alt=""/><br /><sub><b>Nikita Bibanaev</b></sub></a><br /><a href="#translation-nicky18013" title="Translation">ðŸŒ</a></td> |
341 | <td align="center"><a href="https://crowdin.com/profile/elviseras"><img src="https://www.gravatar.com/avatar/25c2cf0d8cb4a4141e71c3b8a2e9324f" width="40px;" alt="elviseras"/><br /><sub><b>elviseras</b></sub></a><br /><a href="#translation-elviseras" title="Translation">ðŸŒ</a></td> | 366 | <td align="center"><a href="https://crowdin.com/profile/Tatjana1998"><img src="https://www.gravatar.com/avatar/ade202a04fcbb2c177e4f1d9936af29e" width="40px;" alt=""/><br /><sub><b>Tatjana1998</b></sub></a><br /><a href="#translation-Tatjana1998" title="Translation">ðŸŒ</a></td> |
342 | <td align="center"><a href="https://crowdin.com/profile/J370"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14141203/small/7b12b5db419d8796450221c2eaaf6003.png" width="40px;" alt="J370"/><br /><sub><b>J370</b></sub></a><br /><a href="#translation-J370" title="Translation">ðŸŒ</a></td> | 367 | <td align="center"><a href="https://crowdin.com/profile/seayko"><img src="https://www.gravatar.com/avatar/65e2aef738ddf828f822d8463fd04918" width="40px;" alt=""/><br /><sub><b>tinect</b></sub></a><br /><a href="#translation-seayko" title="Translation">ðŸŒ</a></td> |
343 | </tr> | 368 | </tr> |
344 | <tr> | 369 | <tr> |
345 | <td align="center"><a href="https://crowdin.com/profile/keunes"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13018172/small/829115c606347b10218f34c637a2100c.png" width="40px;" alt="Koen"/><br /><sub><b>Koen</b></sub></a><br /><a href="#translation-keunes" title="Translation">ðŸŒ</a></td> | 370 | <td align="center"><a href="https://crowdin.com/profile/Pusnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13514833/small/65f0b45587cc7e34f2827830cd324b16.jpeg" width="40px;" alt=""/><br /><sub><b>Wonsup Yoon</b></sub></a><br /><a href="#translation-Pusnow" title="Translation">ðŸŒ</a></td> |
346 | <td align="center"><a href="https://crowdin.com/profile/leandrogehlen"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14099621/small/1d9503523839c310dbce0af3c226e894.jpeg" width="40px;" alt="Leandro Gehlen"/><br /><sub><b>Leandro Gehlen</b></sub></a><br /><a href="#translation-leandrogehlen" title="Translation">ðŸŒ</a></td> | 371 | <td align="center"><a href="https://crowdin.com/profile/zutt"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13320003/small/50fdf9f8c7e54a446925bd79696ea625.JPG" width="40px;" alt=""/><br /><sub><b>zutt</b></sub></a><br /><a href="#translation-zutt" title="Translation">ðŸŒ</a></td> |
347 | <td align="center"><a href="https://crowdin.com/profile/Matthieu42"><img src="https://www.gravatar.com/avatar/735217ccccf11ba97573deee517ddb19" width="40px;" alt="Matthieu42"/><br /><sub><b>Matthieu42</b></sub></a><br /><a href="#translation-Matthieu42" title="Translation">ðŸŒ</a></td> | 372 | <td align="center"><a href="http://twitter.com/noemis_exec"><img src="https://avatars3.githubusercontent.com/u/22817873?v=4" width="40px;" alt=""/><br /><sub><b>n0emis</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=n0emis" title="Code">💻</a> <a href="#translation-n0emis" title="Translation">ðŸŒ</a></td> |
348 | <td align="center"><a href="https://crowdin.com/profile/nicky18013"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13468928/small/2b31e7ac19645d950a79b33ffd5721b8.png" width="40px;" alt="Nikita Bibanaev"/><br /><sub><b>Nikita Bibanaev</b></sub></a><br /><a href="#translation-nicky18013" title="Translation">ðŸŒ</a></td> | 373 | <td align="center"><a href="https://www.monke-agency.com/equipe.html"><img src="https://avatars2.githubusercontent.com/u/3405028?v=4" width="40px;" alt=""/><br /><sub><b>gmarec</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=gmarec" title="Code">💻</a></td> |
349 | <td align="center"><a href="https://crowdin.com/profile/Tatjana1998"><img src="https://www.gravatar.com/avatar/ade202a04fcbb2c177e4f1d9936af29e" width="40px;" alt="Tatjana1998"/><br /><sub><b>Tatjana1998</b></sub></a><br /><a href="#translation-Tatjana1998" title="Translation">ðŸŒ</a></td> | 374 | <td align="center"><a href="https://crowdin.com/profile/127oo1"><img src="https://www.gravatar.com/avatar/060c722be11da16ae31902e9c98326b2" width="40px;" alt=""/><br /><sub><b>127oo1</b></sub></a><br /><a href="#translation-127oo1" title="Translation">ðŸŒ</a></td> |
350 | <td align="center"><a href="https://crowdin.com/profile/seayko"><img src="https://www.gravatar.com/avatar/65e2aef738ddf828f822d8463fd04918" width="40px;" alt="tinect"/><br /><sub><b>tinect</b></sub></a><br /><a href="#translation-seayko" title="Translation">ðŸŒ</a></td> | 375 | <td align="center"><a href="https://crowdin.com/profile/ChTBoner"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13273153/small/a810886febf5199cfa1c98644444dea7.jpeg" width="40px;" alt=""/><br /><sub><b>ChTBoner</b></sub></a><br /><a href="#translation-ChTBoner" title="Translation">ðŸŒ</a></td> |
351 | </tr> | 376 | </tr> |
352 | <tr> | 377 | <tr> |
353 | <td align="center"><a href="https://crowdin.com/profile/Pusnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13514833/small/65f0b45587cc7e34f2827830cd324b16.jpeg" width="40px;" alt="Wonsup Yoon"/><br /><sub><b>Wonsup Yoon</b></sub></a><br /><a href="#translation-Pusnow" title="Translation">ðŸŒ</a></td> | 378 | <td align="center"><a href="https://crowdin.com/profile/johanengstrand"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14152801/small/fd395f120efca971ca9b34c57fd02cca.png" width="40px;" alt=""/><br /><sub><b>Johan Engstrand</b></sub></a><br /><a href="#translation-johanengstrand" title="Translation">ðŸŒ</a></td> |
354 | <td align="center"><a href="https://crowdin.com/profile/zutt"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13320003/small/50fdf9f8c7e54a446925bd79696ea625.JPG" width="40px;" alt="zutt"/><br /><sub><b>zutt</b></sub></a><br /><a href="#translation-zutt" title="Translation">ðŸŒ</a></td> | 379 | <td align="center"><a href="https://mrassili.com"><img src="https://avatars0.githubusercontent.com/u/25288435?v=4" width="40px;" alt=""/><br /><sub><b>Marouane R</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=mrassili" title="Code">💻</a></td> |
355 | <td align="center"><a href="http://twitter.com/noemis_exec"><img src="https://avatars3.githubusercontent.com/u/22817873?v=4" width="40px;" alt="n0emis"/><br /><sub><b>n0emis</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=n0emis" title="Code">💻</a> <a href="#translation-n0emis" title="Translation">ðŸŒ</a></td> | 380 | <td align="center"><a href="https://github.com/yourcontact"><img src="https://avatars2.githubusercontent.com/u/46404814?v=4" width="40px;" alt=""/><br /><sub><b>Roman</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=yourcontact" title="Code">💻</a> <a href="#ideas-yourcontact" title="Ideas, Planning, & Feedback">🤔</a></td> |
356 | <td align="center"><a href="https://www.monke-agency.com/equipe.html"><img src="https://avatars2.githubusercontent.com/u/3405028?v=4" width="40px;" alt="gmarec"/><br /><sub><b>gmarec</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=gmarec" title="Code">💻</a></td> | 381 | <td align="center"><a href="https://github.com/mahadevans87"><img src="https://avatars1.githubusercontent.com/u/1255523?v=4" width="40px;" alt=""/><br /><sub><b>Mahadevan Sreenivasan</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=mahadevans87" title="Code">💻</a> <a href="#ideas-mahadevans87" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Amahadevans87" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Amahadevans87" title="Bug reports">ðŸ›</a> <a href="https://github.com/getferdi/ferdi/commits?author=mahadevans87" title="Documentation">📖</a> <a href="#userTesting-mahadevans87" title="User Testing">📓</a></td> |
357 | <td align="center"><a href="https://crowdin.com/profile/127oo1"><img src="https://www.gravatar.com/avatar/060c722be11da16ae31902e9c98326b2" width="40px;" alt="127oo1"/><br /><sub><b>127oo1</b></sub></a><br /><a href="#translation-127oo1" title="Translation">ðŸŒ</a></td> | 382 | <td align="center"><a href="https://jakelee.co.uk"><img src="https://avatars2.githubusercontent.com/u/12380876?v=4" width="40px;" alt=""/><br /><sub><b>Jake Lee</b></sub></a><br /><a href="#content-JakeSteam" title="Content">🖋</a></td> |
358 | <td align="center"><a href="https://crowdin.com/profile/ChTBoner"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13273153/small/a810886febf5199cfa1c98644444dea7.jpeg" width="40px;" alt="ChTBoner"/><br /><sub><b>ChTBoner</b></sub></a><br /><a href="#translation-ChTBoner" title="Translation">ðŸŒ</a></td> | 383 | <td align="center"><a href="https://github.com/sampathBlam"><img src="https://avatars1.githubusercontent.com/u/17728976?v=4" width="40px;" alt=""/><br /><sub><b>Sampath Kumar Krishnan</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=sampathBlam" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3AsampathBlam" title="Reviewed Pull Requests">👀</a> <a href="#ideas-sampathBlam" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AsampathBlam" title="Bug reports">ðŸ›</a> <a href="https://github.com/getferdi/ferdi/commits?author=sampathBlam" title="Documentation">📖</a> <a href="#userTesting-sampathBlam" title="User Testing">📓</a></td> |
359 | </tr> | 384 | </tr> |
360 | <tr> | 385 | <tr> |
361 | <td align="center"><a href="https://crowdin.com/profile/johanengstrand"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14152801/small/fd395f120efca971ca9b34c57fd02cca.png" width="40px;" alt="Johan Engstrand"/><br /><sub><b>Johan Engstrand</b></sub></a><br /><a href="#translation-johanengstrand" title="Translation">ðŸŒ</a></td> | 386 | <td align="center"><a href="https://github.com/saruwman"><img src="https://avatars2.githubusercontent.com/u/41330038?v=4" width="40px;" alt=""/><br /><sub><b>saruwman</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=saruwman" title="Documentation">📖</a> <a href="https://github.com/getferdi/ferdi/commits?author=saruwman" title="Code">💻</a></td> |
362 | <td align="center"><a href="https://mrassili.com"><img src="https://avatars0.githubusercontent.com/u/25288435?v=4" width="40px;" alt="Marouane R"/><br /><sub><b>Marouane R</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=mrassili" title="Code">💻</a></td> | 387 | <td align="center"><a href="https://github.com/dorukkarinca"><img src="https://avatars0.githubusercontent.com/u/9303867?v=4" width="40px;" alt=""/><br /><sub><b>dorukkarinca</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adorukkarinca" title="Bug reports">ðŸ›</a></td> |
363 | <td align="center"><a href="https://github.com/yourcontact"><img src="https://avatars2.githubusercontent.com/u/46404814?v=4" width="40px;" alt="Roman"/><br /><sub><b>Roman</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=yourcontact" title="Code">💻</a></td> | 388 | <td align="center"><a href="https://www.linkedin.com/in/gautamsi"><img src="https://avatars2.githubusercontent.com/u/5769869?v=4" width="40px;" alt=""/><br /><sub><b>Gautam Singh</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=gautamsi" title="Code">💻</a></td> |
364 | <td align="center"><a href="https://github.com/mahadevans87"><img src="https://avatars1.githubusercontent.com/u/1255523?v=4" width="40px;" alt="Mahadevan Sreenivasan"/><br /><sub><b>Mahadevan Sreenivasan</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=mahadevans87" title="Code">💻</a> <a href="#ideas-mahadevans87" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Amahadevans87" title="Reviewed Pull Requests">👀</a></td> | 389 | <td align="center"><a href="https://feikojoosten.com"><img src="https://avatars0.githubusercontent.com/u/10920052?v=4" width="40px;" alt=""/><br /><sub><b>Feiko Joosten</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=FeikoJoosten" title="Code">💻</a></td> |
365 | <td align="center"><a href="https://jakelee.co.uk"><img src="https://avatars2.githubusercontent.com/u/12380876?v=4" width="40px;" alt="Jake Lee"/><br /><sub><b>Jake Lee</b></sub></a><br /><a href="#content-JakeSteam" title="Content">🖋</a></td> | 390 | <td align="center"><a href="https://crowdin.com/profile/2bdelghafour"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14219410/small/31ff20f60d352fb46e314f3c180a77b0.jpeg" width="40px;" alt=""/><br /><sub><b>2bdelghafour</b></sub></a><br /><a href="#translation-2bdelghafour" title="Translation">ðŸŒ</a></td> |
366 | <td align="center"><a href="https://github.com/sampathBlam"><img src="https://avatars1.githubusercontent.com/u/17728976?v=4" width="40px;" alt="Sampath Kumar Krishnan"/><br /><sub><b>Sampath Kumar Krishnan</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=sampathBlam" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3AsampathBlam" title="Reviewed Pull Requests">👀</a></td> | 391 | <td align="center"><a href="https://crowdin.com/profile/abdoutanta"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14213908/small/5b2fc8166f8a0a2b7313fbf49ee5b6b6.jpeg" width="40px;" alt=""/><br /><sub><b>Abderrahim Tantaoui</b></sub></a><br /><a href="#translation-abdoutanta" title="Translation">ðŸŒ</a></td> |
367 | </tr> | 392 | </tr> |
368 | <tr> | 393 | <tr> |
369 | <td align="center"><a href="https://github.com/saruwman"><img src="https://avatars2.githubusercontent.com/u/41330038?v=4" width="40px;" alt="saruwman"/><br /><sub><b>saruwman</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=saruwman" title="Documentation">📖</a> <a href="https://github.com/getferdi/ferdi/commits?author=saruwman" title="Code">💻</a></td> | 394 | <td align="center"><a href="https://crowdin.com/profile/AndiLeni"><img src="https://www.gravatar.com/avatar/4bd0da860de38afa735425ce2d4e10b5" width="40px;" alt=""/><br /><sub><b>AndiLeni</b></sub></a><br /><a href="#translation-AndiLeni" title="Translation">ðŸŒ</a></td> |
370 | <td align="center"><a href="https://github.com/dorukkarinca"><img src="https://avatars0.githubusercontent.com/u/9303867?v=4" width="40px;" alt="dorukkarinca"/><br /><sub><b>dorukkarinca</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adorukkarinca" title="Bug reports">ðŸ›</a></td> | 395 | <td align="center"><a href="https://crowdin.com/profile/brunofalmada"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14200540/small/f6f1addceeeabc02488f9b08520a902f.jpeg" width="40px;" alt=""/><br /><sub><b>Bruno Almada</b></sub></a><br /><a href="#translation-brunofalmada" title="Translation">ðŸŒ</a></td> |
371 | <td align="center"><a href="https://www.linkedin.com/in/gautamsi"><img src="https://avatars2.githubusercontent.com/u/5769869?v=4" width="40px;" alt="Gautam Singh"/><br /><sub><b>Gautam Singh</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=gautamsi" title="Code">💻</a></td> | 396 | <td align="center"><a href="https://crowdin.com/profile/Catarino"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14208802/small/07287eb2de671257ca3d6bb4ba1cca67.jpeg" width="40px;" alt=""/><br /><sub><b>Catarino Gonçalo</b></sub></a><br /><a href="#translation-Catarino" title="Translation">ðŸŒ</a></td> |
372 | <td align="center"><a href="https://feikojoosten.com"><img src="https://avatars0.githubusercontent.com/u/10920052?v=4" width="40px;" alt="Feiko Joosten"/><br /><sub><b>Feiko Joosten</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=FeikoJoosten" title="Code">💻</a></td> | 397 | <td align="center"><a href="https://crowdin.com/profile/Alzemand"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14184269/small/f5e68247f01988ae7951a282f0fd4d06.jpeg" width="40px;" alt=""/><br /><sub><b>Edilson Alzemand Sigmaringa Junior</b></sub></a><br /><a href="#translation-Alzemand" title="Translation">ðŸŒ</a></td> |
373 | <td align="center"><a href="https://crowdin.com/profile/2bdelghafour"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14219410/small/31ff20f60d352fb46e314f3c180a77b0.jpeg" width="40px;" alt="2bdelghafour"/><br /><sub><b>2bdelghafour</b></sub></a><br /><a href="#translation-2bdelghafour" title="Translation">ðŸŒ</a></td> | 398 | <td align="center"><a href="https://crowdin.com/profile/MAT-OUT"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14201550/small/68dd2402bf2879bc3ca312d627710400.png" width="40px;" alt=""/><br /><sub><b>MAT-OUT</b></sub></a><br /><a href="#translation-MAT-OUT" title="Translation">ðŸŒ</a></td> |
374 | <td align="center"><a href="https://crowdin.com/profile/abdoutanta"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14213908/small/5b2fc8166f8a0a2b7313fbf49ee5b6b6.jpeg" width="40px;" alt="Abderrahim Tantaoui"/><br /><sub><b>Abderrahim Tantaoui</b></sub></a><br /><a href="#translation-abdoutanta" title="Translation">ðŸŒ</a></td> | 399 | <td align="center"><a href="https://crowdin.com/profile/mazzo98"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12864917/small/69799b5fd7be2f67282715d5cdfd4ae1.png" width="40px;" alt=""/><br /><sub><b>mazzo98</b></sub></a><br /><a href="#translation-mazzo98" title="Translation">ðŸŒ</a></td> |
375 | </tr> | 400 | </tr> |
376 | <tr> | 401 | <tr> |
377 | <td align="center"><a href="https://crowdin.com/profile/AndiLeni"><img src="https://www.gravatar.com/avatar/4bd0da860de38afa735425ce2d4e10b5" width="40px;" alt="AndiLeni"/><br /><sub><b>AndiLeni</b></sub></a><br /><a href="#translation-AndiLeni" title="Translation">ðŸŒ</a></td> | 402 | <td align="center"><a href="https://crowdin.com/profile/paprika-naught-tiffin-flyspeck"><img src="https://www.gravatar.com/avatar/8671ebe7a7164dfa7624fbdbff69ed96" width="40px;" alt=""/><br /><sub><b>paprika-naught-tiffin-flyspeck</b></sub></a><br /><a href="#translation-paprika-naught-tiffin-flyspeck" title="Translation">ðŸŒ</a></td> |
378 | <td align="center"><a href="https://crowdin.com/profile/brunofalmada"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14200540/small/f6f1addceeeabc02488f9b08520a902f.jpeg" width="40px;" alt="Bruno Almada"/><br /><sub><b>Bruno Almada</b></sub></a><br /><a href="#translation-brunofalmada" title="Translation">ðŸŒ</a></td> | 403 | <td align="center"><a href="https://crowdin.com/profile/patrickvalle"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14217484/small/8b73f313ee79fe33625e819cdac86551.jpg" width="40px;" alt=""/><br /><sub><b>Patrick Valle</b></sub></a><br /><a href="#translation-patrickvalle" title="Translation">ðŸŒ</a></td> |
379 | <td align="center"><a href="https://crowdin.com/profile/Catarino"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14208802/small/07287eb2de671257ca3d6bb4ba1cca67.jpeg" width="40px;" alt="Catarino Gonçalo"/><br /><sub><b>Catarino Gonçalo</b></sub></a><br /><a href="#translation-Catarino" title="Translation">ðŸŒ</a></td> | 404 | <td align="center"><a href="https://crowdin.com/profile/peq42"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14155811/small/b62a94dde7ec29948ec6a6af9fd24b1d.png" width="40px;" alt=""/><br /><sub><b>peq42_</b></sub></a><br /><a href="#translation-peq42" title="Translation">ðŸŒ</a></td> |
380 | <td align="center"><a href="https://crowdin.com/profile/Alzemand"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14184269/small/f5e68247f01988ae7951a282f0fd4d06.jpeg" width="40px;" alt="Edilson Alzemand Sigmaringa Junior"/><br /><sub><b>Edilson Alzemand Sigmaringa Junior</b></sub></a><br /><a href="#translation-Alzemand" title="Translation">ðŸŒ</a></td> | 405 | <td align="center"><a href="https://crowdin.com/profile/karlinhos"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14161139/small/96450eb44c22b3141ab4401e547109b8.png" width="40px;" alt=""/><br /><sub><b>Pumbinha</b></sub></a><br /><a href="#translation-karlinhos" title="Translation">ðŸŒ</a></td> |
381 | <td align="center"><a href="https://crowdin.com/profile/MAT-OUT"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14201550/small/68dd2402bf2879bc3ca312d627710400.png" width="40px;" alt="MAT-OUT"/><br /><sub><b>MAT-OUT</b></sub></a><br /><a href="#translation-MAT-OUT" title="Translation">ðŸŒ</a></td> | 406 | <td align="center"><a href="https://crowdin.com/profile/dies"><img src="https://crowdin-static.downloads.crowdin.com/avatar/1/small/e84bcdf6c084ffd52527931f988fb410.png" width="40px;" alt=""/><br /><sub><b>Serhiy Dmytryshyn</b></sub></a><br /><a href="#translation-dies" title="Translation">ðŸŒ</a></td> |
382 | <td align="center"><a href="https://crowdin.com/profile/mazzo98"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12864917/small/69799b5fd7be2f67282715d5cdfd4ae1.png" width="40px;" alt="mazzo98"/><br /><sub><b>mazzo98</b></sub></a><br /><a href="#translation-mazzo98" title="Translation">ðŸŒ</a></td> | 407 | <td align="center"><a href="https://crowdin.com/profile/SMile61"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14177585/small/1bb4f6ba39bff3df8f579e61460ce016.png" width="40px;" alt=""/><br /><sub><b>SMile61</b></sub></a><br /><a href="#translation-SMile61" title="Translation">ðŸŒ</a></td> |
383 | </tr> | 408 | </tr> |
384 | <tr> | 409 | <tr> |
385 | <td align="center"><a href="https://crowdin.com/profile/paprika-naught-tiffin-flyspeck"><img src="https://www.gravatar.com/avatar/8671ebe7a7164dfa7624fbdbff69ed96" width="40px;" alt="paprika-naught-tiffin-flyspeck"/><br /><sub><b>paprika-naught-tiffin-flyspeck</b></sub></a><br /><a href="#translation-paprika-naught-tiffin-flyspeck" title="Translation">ðŸŒ</a></td> | 410 | <td align="center"><a href="https://crowdin.com/profile/tinect"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12521988/small/56c2041645746af9e51dd28782b828c3.jpeg" width="40px;" alt=""/><br /><sub><b>tinect</b></sub></a><br /><a href="#translation-tinect" title="Translation">ðŸŒ</a></td> |
386 | <td align="center"><a href="https://crowdin.com/profile/patrickvalle"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14217484/small/8b73f313ee79fe33625e819cdac86551.jpg" width="40px;" alt="Patrick Valle"/><br /><sub><b>Patrick Valle</b></sub></a><br /><a href="#translation-patrickvalle" title="Translation">ðŸŒ</a></td> | 411 | <td align="center"><a href="https://github.com/gega7"><img src="https://avatars0.githubusercontent.com/u/20799911?v=4" width="40px;" alt=""/><br /><sub><b>gega7</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Agega7" title="Bug reports">ðŸ›</a></td> |
387 | <td align="center"><a href="https://crowdin.com/profile/peq42"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14155811/small/b62a94dde7ec29948ec6a6af9fd24b1d.png" width="40px;" alt="peq42_"/><br /><sub><b>peq42_</b></sub></a><br /><a href="#translation-peq42" title="Translation">ðŸŒ</a></td> | 412 | <td align="center"><a href="https://github.com/tristanplouz"><img src="https://avatars2.githubusercontent.com/u/6893466?v=4" width="40px;" alt=""/><br /><sub><b>tristanplouz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=tristanplouz" title="Code">💻</a> <a href="#ideas-tristanplouz" title="Ideas, Planning, & Feedback">🤔</a></td> |
388 | <td align="center"><a href="https://crowdin.com/profile/karlinhos"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14161139/small/96450eb44c22b3141ab4401e547109b8.png" width="40px;" alt="Pumbinha"/><br /><sub><b>Pumbinha</b></sub></a><br /><a href="#translation-karlinhos" title="Translation">ðŸŒ</a></td> | 413 | <td align="center"><a href="https://github.com/dannyqiu"><img src="https://avatars1.githubusercontent.com/u/1170755?v=4" width="40px;" alt=""/><br /><sub><b>Danny Qiu</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=dannyqiu" title="Code">💻</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Adannyqiu" title="Bug reports">ðŸ›</a></td> |
389 | <td align="center"><a href="https://crowdin.com/profile/dies"><img src="https://crowdin-static.downloads.crowdin.com/avatar/1/small/e84bcdf6c084ffd52527931f988fb410.png" width="40px;" alt="Serhiy Dmytryshyn"/><br /><sub><b>Serhiy Dmytryshyn</b></sub></a><br /><a href="#translation-dies" title="Translation">ðŸŒ</a></td> | 414 | <td align="center"><a href="https://github.com/belyazidi56"><img src="https://avatars3.githubusercontent.com/u/35711540?v=4" width="40px;" alt=""/><br /><sub><b>Youssef Belyazidi</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=belyazidi56" title="Code">💻</a></td> |
390 | <td align="center"><a href="https://crowdin.com/profile/SMile61"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14177585/small/1bb4f6ba39bff3df8f579e61460ce016.png" width="40px;" alt="SMile61"/><br /><sub><b>SMile61</b></sub></a><br /><a href="#translation-SMile61" title="Translation">ðŸŒ</a></td> | 415 | <td align="center"><a href="https://github.com/gabspeck"><img src="https://avatars2.githubusercontent.com/u/749488?v=4" width="40px;" alt=""/><br /><sub><b>Gabriel Speckhahn</b></sub></a><br /><a href="#platform-gabspeck" title="Packaging/porting to new platform">📦</a></td> |
391 | </tr> | 416 | </tr> |
392 | <tr> | 417 | <tr> |
393 | <td align="center"><a href="https://crowdin.com/profile/tinect"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12521988/small/56c2041645746af9e51dd28782b828c3.jpeg" width="40px;" alt="tinect"/><br /><sub><b>tinect</b></sub></a><br /><a href="#translation-tinect" title="Translation">ðŸŒ</a></td> | 418 | <td align="center"><a href="https://github.com/dandelionadia"><img src="https://avatars0.githubusercontent.com/u/33199975?v=4" width="40px;" alt=""/><br /><sub><b>Nadiia Ridko</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=dandelionadia" title="Code">💻</a></td> |
419 | <td align="center"><a href="https://hohner.dev"><img src="https://avatars0.githubusercontent.com/u/649895?v=4" width="40px;" alt=""/><br /><sub><b>Jan Hohner</b></sub></a><br /><a href="#userTesting-janhohner" title="User Testing">📓</a></td> | ||
420 | <td align="center"><a href="https://marussy.com"><img src="https://avatars1.githubusercontent.com/u/38888?v=4" width="40px;" alt=""/><br /><sub><b>Kristóf Marussy</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=kris7t" title="Code">💻</a></td> | ||
394 | </tr> | 421 | </tr> |
395 | </table> | 422 | </table> |
396 | 423 | ||
diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..48516db61 --- /dev/null +++ b/SECURITY.md | |||
@@ -0,0 +1,17 @@ | |||
1 | # Security Policy | ||
2 | |||
3 | ## Supported Versions | ||
4 | |||
5 | | Version | Supported | | ||
6 | | ------- | ------------------ | | ||
7 | | 5.5.0 | :white_check_mark: | | ||
8 | | 5.4.3 | :x: | | ||
9 | | < 5.4.3 | :x: | | ||
10 | |||
11 | ## Reporting a Vulnerability | ||
12 | |||
13 | If you discover a minor vulnerability in Ferdi, please create a new issue on GitHub. Minor vulnerabilities are those, that do not leave the user at immediate danger, i.e. though remote code execution. | ||
14 | |||
15 | If you discover a major vulnerability in Ferdi, please report it to us via E-Mail to `hello@getferdi.com`, prefixing your E-Mail subject with "[Security]". We will then come in contact with you as quickly as possible. | ||
16 | |||
17 | Please keep in mind that some vulnerabilities you find may not be due to Ferdi but instead due to ElectronJS or Chromium. In that case, please contact the owners of those projects instead. | ||
diff --git a/appveyor.yml b/appveyor.yml index acdd94e13..d6e909f9c 100644 --- a/appveyor.yml +++ b/appveyor.yml | |||
@@ -2,6 +2,7 @@ version: build-{build} | |||
2 | branches: | 2 | branches: |
3 | only: | 3 | only: |
4 | - release | 4 | - release |
5 | - nightly | ||
5 | skip_tags: true | 6 | skip_tags: true |
6 | skip_branch_with_pr: true | 7 | skip_branch_with_pr: true |
7 | 8 | ||
@@ -20,3 +21,13 @@ before_build: | |||
20 | 21 | ||
21 | build_script: | 22 | build_script: |
22 | - appveyor-retry npm run build | 23 | - appveyor-retry npm run build |
24 | |||
25 | for: | ||
26 | - | ||
27 | branches: | ||
28 | only: | ||
29 | - nightly | ||
30 | before_build: | ||
31 | - npm version prerelease --preid=nightly --no-git-tag-version | ||
32 | build_script: | ||
33 | - appveyor-retry npm run build -- --publish always -c.publish.provider=github -c.publish.owner=getferdi -c.publish.repo=nightlies | ||
diff --git a/build-helpers/notarize.js b/build-helpers/notarize.js index fc463f749..cb83808ad 100644 --- a/build-helpers/notarize.js +++ b/build-helpers/notarize.js | |||
@@ -2,7 +2,7 @@ const { notarize } = require("electron-notarize"); | |||
2 | 2 | ||
3 | exports.default = async function notarizing(context) { | 3 | exports.default = async function notarizing(context) { |
4 | const { electronPlatformName, appOutDir } = context; | 4 | const { electronPlatformName, appOutDir } = context; |
5 | if (electronPlatformName !== "darwin" || process.env.TRAVIS_BRANCH !== 'release') { | 5 | if (electronPlatformName !== "darwin" || (process.env.TRAVIS_BRANCH !== 'release' && process.env.TRAVIS_BRANCH !== 'nightly')) { |
6 | return; | 6 | return; |
7 | } | 7 | } |
8 | 8 | ||
diff --git a/package-lock.json b/package-lock.json index 65294a3a6..c3d3e2474 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "version": "5.5.0", | 3 | "version": "5.5.1-nightly.13", |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
@@ -4403,6 +4403,11 @@ | |||
4403 | "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", | 4403 | "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", |
4404 | "dev": true | 4404 | "dev": true |
4405 | }, | 4405 | }, |
4406 | "@nornagon/put": { | ||
4407 | "version": "0.0.8", | ||
4408 | "resolved": "https://registry.npmjs.org/@nornagon/put/-/put-0.0.8.tgz", | ||
4409 | "integrity": "sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==" | ||
4410 | }, | ||
4406 | "@octokit/endpoint": { | 4411 | "@octokit/endpoint": { |
4407 | "version": "5.5.1", | 4412 | "version": "5.5.1", |
4408 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz", | 4413 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz", |
@@ -5140,6 +5145,16 @@ | |||
5140 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | 5145 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
5141 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" | 5146 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" |
5142 | }, | 5147 | }, |
5148 | "abstract-socket": { | ||
5149 | "version": "2.1.1", | ||
5150 | "resolved": "https://registry.npmjs.org/abstract-socket/-/abstract-socket-2.1.1.tgz", | ||
5151 | "integrity": "sha512-YZJizsvS1aBua5Gd01woe4zuyYBGgSMeqDOB6/ChwdTI904KP6QGtJswXl4hcqWxbz86hQBe++HWV0hF1aGUtA==", | ||
5152 | "optional": true, | ||
5153 | "requires": { | ||
5154 | "bindings": "^1.2.1", | ||
5155 | "nan": "^2.12.1" | ||
5156 | } | ||
5157 | }, | ||
5143 | "accepts": { | 5158 | "accepts": { |
5144 | "version": "1.0.7", | 5159 | "version": "1.0.7", |
5145 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz", | 5160 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz", |
@@ -9134,6 +9149,21 @@ | |||
9134 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", | 9149 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", |
9135 | "dev": true | 9150 | "dev": true |
9136 | }, | 9151 | }, |
9152 | "dbus-next": { | ||
9153 | "version": "0.8.2", | ||
9154 | "resolved": "https://registry.npmjs.org/dbus-next/-/dbus-next-0.8.2.tgz", | ||
9155 | "integrity": "sha512-E2wkbhZzzsgmY+jxIdeuhA1nVT697I5koRIRJTk3doTeukwtzqSFG89RC5XK8OsLG/eHDZ8PVNptUuEPkhdPbA==", | ||
9156 | "requires": { | ||
9157 | "@nornagon/put": "0.0.8", | ||
9158 | "abstract-socket": "^2.0.0", | ||
9159 | "event-stream": "3.3.4", | ||
9160 | "hexy": "^0.2.10", | ||
9161 | "jsbi": "^2.0.5", | ||
9162 | "long": "^4.0.0", | ||
9163 | "safe-buffer": "^5.1.1", | ||
9164 | "xml2js": "^0.4.17" | ||
9165 | } | ||
9166 | }, | ||
9137 | "debug": { | 9167 | "debug": { |
9138 | "version": "4.1.1", | 9168 | "version": "4.1.1", |
9139 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", | 9169 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", |
@@ -11452,6 +11482,30 @@ | |||
11452 | "resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.5.3.tgz", | 11482 | "resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.5.3.tgz", |
11453 | "integrity": "sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ==" | 11483 | "integrity": "sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ==" |
11454 | }, | 11484 | }, |
11485 | "event-stream": { | ||
11486 | "version": "3.3.4", | ||
11487 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", | ||
11488 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", | ||
11489 | "requires": { | ||
11490 | "duplexer": "~0.1.1", | ||
11491 | "from": "~0", | ||
11492 | "map-stream": "~0.1.0", | ||
11493 | "pause-stream": "0.0.11", | ||
11494 | "split": "0.3", | ||
11495 | "stream-combiner": "~0.0.4", | ||
11496 | "through": "~2.3.1" | ||
11497 | }, | ||
11498 | "dependencies": { | ||
11499 | "split": { | ||
11500 | "version": "0.3.3", | ||
11501 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", | ||
11502 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", | ||
11503 | "requires": { | ||
11504 | "through": "2" | ||
11505 | } | ||
11506 | } | ||
11507 | } | ||
11508 | }, | ||
11455 | "eventemitter2": { | 11509 | "eventemitter2": { |
11456 | "version": "5.0.1", | 11510 | "version": "5.0.1", |
11457 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", | 11511 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", |
@@ -12426,6 +12480,11 @@ | |||
12426 | "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=", | 12480 | "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=", |
12427 | "dev": true | 12481 | "dev": true |
12428 | }, | 12482 | }, |
12483 | "from": { | ||
12484 | "version": "0.1.7", | ||
12485 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", | ||
12486 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" | ||
12487 | }, | ||
12429 | "from2": { | 12488 | "from2": { |
12430 | "version": "2.3.0", | 12489 | "version": "2.3.0", |
12431 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", | 12490 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", |
@@ -13985,13 +14044,13 @@ | |||
13985 | } | 14044 | } |
13986 | }, | 14045 | }, |
13987 | "globule": { | 14046 | "globule": { |
13988 | "version": "1.2.1", | 14047 | "version": "1.3.1", |
13989 | "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", | 14048 | "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", |
13990 | "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", | 14049 | "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", |
13991 | "dev": true, | 14050 | "dev": true, |
13992 | "requires": { | 14051 | "requires": { |
13993 | "glob": "~7.1.1", | 14052 | "glob": "~7.1.1", |
13994 | "lodash": "~4.17.10", | 14053 | "lodash": "~4.17.12", |
13995 | "minimatch": "~3.0.2" | 14054 | "minimatch": "~3.0.2" |
13996 | } | 14055 | } |
13997 | }, | 14056 | }, |
@@ -15628,6 +15687,11 @@ | |||
15628 | "resolved": "https://registry.npmjs.org/hex-to-rgba/-/hex-to-rgba-1.0.2.tgz", | 15687 | "resolved": "https://registry.npmjs.org/hex-to-rgba/-/hex-to-rgba-1.0.2.tgz", |
15629 | "integrity": "sha512-fL+4NFccs86iOuDnFl1Mhyn471qTPAkpE7k39+JYGPMB3+S9LoUnauQI2nz6BUb3DpYQCx8RqENbaf8IFdKYOg==" | 15688 | "integrity": "sha512-fL+4NFccs86iOuDnFl1Mhyn471qTPAkpE7k39+JYGPMB3+S9LoUnauQI2nz6BUb3DpYQCx8RqENbaf8IFdKYOg==" |
15630 | }, | 15689 | }, |
15690 | "hexy": { | ||
15691 | "version": "0.2.11", | ||
15692 | "resolved": "https://registry.npmjs.org/hexy/-/hexy-0.2.11.tgz", | ||
15693 | "integrity": "sha512-ciq6hFsSG/Bpt2DmrZJtv+56zpPdnq+NQ4ijEFrveKN0ZG1mhl/LdT1NQZ9se6ty1fACcI4d4vYqC9v8EYpH2A==" | ||
15694 | }, | ||
15631 | "history": { | 15695 | "history": { |
15632 | "version": "3.3.0", | 15696 | "version": "3.3.0", |
15633 | "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", | 15697 | "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", |
@@ -16098,9 +16162,9 @@ | |||
16098 | "dev": true | 16162 | "dev": true |
16099 | }, | 16163 | }, |
16100 | "in-publish": { | 16164 | "in-publish": { |
16101 | "version": "2.0.0", | 16165 | "version": "2.0.1", |
16102 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", | 16166 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", |
16103 | "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", | 16167 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", |
16104 | "dev": true | 16168 | "dev": true |
16105 | }, | 16169 | }, |
16106 | "indefinite-observable": { | 16170 | "indefinite-observable": { |
@@ -17465,9 +17529,9 @@ | |||
17465 | } | 17529 | } |
17466 | }, | 17530 | }, |
17467 | "js-base64": { | 17531 | "js-base64": { |
17468 | "version": "2.5.1", | 17532 | "version": "2.5.2", |
17469 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", | 17533 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", |
17470 | "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", | 17534 | "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", |
17471 | "dev": true | 17535 | "dev": true |
17472 | }, | 17536 | }, |
17473 | "js-levenshtein": { | 17537 | "js-levenshtein": { |
@@ -17490,6 +17554,11 @@ | |||
17490 | "esprima": "^4.0.0" | 17554 | "esprima": "^4.0.0" |
17491 | } | 17555 | } |
17492 | }, | 17556 | }, |
17557 | "jsbi": { | ||
17558 | "version": "2.0.5", | ||
17559 | "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-2.0.5.tgz", | ||
17560 | "integrity": "sha512-TzO/62Hxeb26QMb4IGlI/5X+QLr9Uqp1FPkwp2+KOICW+Q+vSuFj61c8pkT6wAns4WcK56X7CmSHhJeDGWOqxQ==" | ||
17561 | }, | ||
17493 | "jsbn": { | 17562 | "jsbn": { |
17494 | "version": "0.1.1", | 17563 | "version": "0.1.1", |
17495 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | 17564 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", |
@@ -18507,6 +18576,11 @@ | |||
18507 | "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", | 18576 | "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", |
18508 | "dev": true | 18577 | "dev": true |
18509 | }, | 18578 | }, |
18579 | "long": { | ||
18580 | "version": "4.0.0", | ||
18581 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", | ||
18582 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" | ||
18583 | }, | ||
18510 | "longest": { | 18584 | "longest": { |
18511 | "version": "1.0.1", | 18585 | "version": "1.0.1", |
18512 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", | 18586 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", |
@@ -18826,6 +18900,11 @@ | |||
18826 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", | 18900 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", |
18827 | "dev": true | 18901 | "dev": true |
18828 | }, | 18902 | }, |
18903 | "map-stream": { | ||
18904 | "version": "0.1.0", | ||
18905 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", | ||
18906 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" | ||
18907 | }, | ||
18829 | "map-visit": { | 18908 | "map-visit": { |
18830 | "version": "1.0.0", | 18909 | "version": "1.0.0", |
18831 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", | 18910 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", |
@@ -20083,9 +20162,9 @@ | |||
20083 | } | 20162 | } |
20084 | }, | 20163 | }, |
20085 | "node-sass": { | 20164 | "node-sass": { |
20086 | "version": "4.13.0", | 20165 | "version": "4.14.0", |
20087 | "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", | 20166 | "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.0.tgz", |
20088 | "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", | 20167 | "integrity": "sha512-AxqU+DFpk0lEz95sI6jO0hU0Rwyw7BXVEv6o9OItoXLyeygPeaSpiV4rwQb10JiTghHaa0gZeD21sz+OsQluaw==", |
20089 | "dev": true, | 20168 | "dev": true, |
20090 | "requires": { | 20169 | "requires": { |
20091 | "async-foreach": "^0.1.3", | 20170 | "async-foreach": "^0.1.3", |
@@ -20215,9 +20294,9 @@ | |||
20215 | } | 20294 | } |
20216 | }, | 20295 | }, |
20217 | "minimist": { | 20296 | "minimist": { |
20218 | "version": "1.2.0", | 20297 | "version": "1.2.5", |
20219 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | 20298 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |
20220 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", | 20299 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", |
20221 | "dev": true | 20300 | "dev": true |
20222 | }, | 20301 | }, |
20223 | "node-gyp": { | 20302 | "node-gyp": { |
@@ -21352,6 +21431,14 @@ | |||
21352 | "pify": "^3.0.0" | 21431 | "pify": "^3.0.0" |
21353 | } | 21432 | } |
21354 | }, | 21433 | }, |
21434 | "pause-stream": { | ||
21435 | "version": "0.0.11", | ||
21436 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", | ||
21437 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", | ||
21438 | "requires": { | ||
21439 | "through": "~2.3" | ||
21440 | } | ||
21441 | }, | ||
21355 | "pbkdf2": { | 21442 | "pbkdf2": { |
21356 | "version": "3.0.17", | 21443 | "version": "3.0.17", |
21357 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", | 21444 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", |
@@ -24896,9 +24983,9 @@ | |||
24896 | }, | 24983 | }, |
24897 | "dependencies": { | 24984 | "dependencies": { |
24898 | "readable-stream": { | 24985 | "readable-stream": { |
24899 | "version": "2.3.6", | 24986 | "version": "2.3.7", |
24900 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | 24987 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", |
24901 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | 24988 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", |
24902 | "dev": true, | 24989 | "dev": true, |
24903 | "requires": { | 24990 | "requires": { |
24904 | "core-util-is": "~1.0.0", | 24991 | "core-util-is": "~1.0.0", |
@@ -24975,6 +25062,14 @@ | |||
24975 | } | 25062 | } |
24976 | } | 25063 | } |
24977 | }, | 25064 | }, |
25065 | "stream-combiner": { | ||
25066 | "version": "0.0.4", | ||
25067 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", | ||
25068 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", | ||
25069 | "requires": { | ||
25070 | "duplexer": "~0.1.1" | ||
25071 | } | ||
25072 | }, | ||
24978 | "stream-each": { | 25073 | "stream-each": { |
24979 | "version": "1.2.3", | 25074 | "version": "1.2.3", |
24980 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", | 25075 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", |
@@ -27873,6 +27968,20 @@ | |||
27873 | "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", | 27968 | "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", |
27874 | "dev": true | 27969 | "dev": true |
27875 | }, | 27970 | }, |
27971 | "xml2js": { | ||
27972 | "version": "0.4.23", | ||
27973 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", | ||
27974 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", | ||
27975 | "requires": { | ||
27976 | "sax": ">=0.6.0", | ||
27977 | "xmlbuilder": "~11.0.0" | ||
27978 | } | ||
27979 | }, | ||
27980 | "xmlbuilder": { | ||
27981 | "version": "11.0.1", | ||
27982 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", | ||
27983 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" | ||
27984 | }, | ||
27876 | "xmlhttprequest": { | 27985 | "xmlhttprequest": { |
27877 | "version": "1.8.0", | 27986 | "version": "1.8.0", |
27878 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", | 27987 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", |
diff --git a/package.json b/package.json index 01b902bc0..0abb3bb7d 100644 --- a/package.json +++ b/package.json | |||
@@ -1,8 +1,9 @@ | |||
1 | { | 1 | { |
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "productName": "Ferdi", | 3 | "productName": "Ferdi", |
4 | "desktopName": "ferdi.desktop", | ||
4 | "appId": "com.kytwb.ferdi", | 5 | "appId": "com.kytwb.ferdi", |
5 | "version": "5.5.0", | 6 | "version": "5.6.0-beta.1", |
6 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", | 7 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", |
7 | "copyright": "kytwb", | 8 | "copyright": "kytwb", |
8 | "main": "index.js", | 9 | "main": "index.js", |
@@ -67,6 +68,7 @@ | |||
67 | "cld3-asm": "1.0.1", | 68 | "cld3-asm": "1.0.1", |
68 | "css": "2.2.4", | 69 | "css": "2.2.4", |
69 | "darkreader": "4.7.15", | 70 | "darkreader": "4.7.15", |
71 | "dbus-next": "0.8.2", | ||
70 | "du": "^0.1.0", | 72 | "du": "^0.1.0", |
71 | "electron-dl": "1.14.0", | 73 | "electron-dl": "1.14.0", |
72 | "electron-fetch": "1.4.0", | 74 | "electron-fetch": "1.4.0", |
@@ -184,7 +186,7 @@ | |||
184 | "lerna": "3.19.0", | 186 | "lerna": "3.19.0", |
185 | "mobx-react-devtools": "6.1.1", | 187 | "mobx-react-devtools": "6.1.1", |
186 | "mocha": "5.2.0", | 188 | "mocha": "5.2.0", |
187 | "node-sass": "4.13.0", | 189 | "node-sass": "4.14.0", |
188 | "prettier": "1.19.1", | 190 | "prettier": "1.19.1", |
189 | "react-intl-translations-manager": "5.0.3", | 191 | "react-intl-translations-manager": "5.0.3", |
190 | "terser-webpack-plugin": "1.2.1", | 192 | "terser-webpack-plugin": "1.2.1", |
diff --git a/src/app.js b/src/app.js index 0e24420c3..aab1729d7 100644 --- a/src/app.js +++ b/src/app.js | |||
@@ -5,7 +5,7 @@ import { render } from 'react-dom'; | |||
5 | import { Provider } from 'mobx-react'; | 5 | import { Provider } from 'mobx-react'; |
6 | import { syncHistoryWithStore, RouterStore } from 'mobx-react-router'; | 6 | import { syncHistoryWithStore, RouterStore } from 'mobx-react-router'; |
7 | import { | 7 | import { |
8 | Router, Route, hashHistory, IndexRedirect, | 8 | hashHistory, |
9 | } from 'react-router'; | 9 | } from 'react-router'; |
10 | 10 | ||
11 | import '@babel/polyfill'; | 11 | import '@babel/polyfill'; |
@@ -20,33 +20,7 @@ import MenuFactory from './lib/Menu'; | |||
20 | import TouchBarFactory from './lib/TouchBar'; | 20 | import TouchBarFactory from './lib/TouchBar'; |
21 | 21 | ||
22 | import I18N from './I18n'; | 22 | import I18N from './I18n'; |
23 | import AppLayoutContainer from './containers/layout/AppLayoutContainer'; | 23 | import Routes from './routes'; |
24 | import SettingsWindow from './containers/settings/SettingsWindow'; | ||
25 | import RecipesScreen from './containers/settings/RecipesScreen'; | ||
26 | import ServicesScreen from './containers/settings/ServicesScreen'; | ||
27 | import EditServiceScreen from './containers/settings/EditServiceScreen'; | ||
28 | import AccountScreen from './containers/settings/AccountScreen'; | ||
29 | import TeamScreen from './containers/settings/TeamScreen'; | ||
30 | import EditUserScreen from './containers/settings/EditUserScreen'; | ||
31 | import EditSettingsScreen from './containers/settings/EditSettingsScreen'; | ||
32 | import InviteSettingsScreen from './containers/settings/InviteScreen'; | ||
33 | import SupportFerdiScreen from './containers/settings/SupportScreen'; | ||
34 | import WelcomeScreen from './containers/auth/WelcomeScreen'; | ||
35 | import LoginScreen from './containers/auth/LoginScreen'; | ||
36 | import LockedScreen from './containers/auth/LockedScreen'; | ||
37 | import PasswordScreen from './containers/auth/PasswordScreen'; | ||
38 | import ChangeServerScreen from './containers/auth/ChangeServerScreen'; | ||
39 | import SignupScreen from './containers/auth/SignupScreen'; | ||
40 | import ImportScreen from './containers/auth/ImportScreen'; | ||
41 | import PricingScreen from './containers/auth/PricingScreen'; | ||
42 | import InviteScreen from './containers/auth/InviteScreen'; | ||
43 | import AuthLayoutContainer from './containers/auth/AuthLayoutContainer'; | ||
44 | import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopupScreen'; | ||
45 | import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen'; | ||
46 | import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen'; | ||
47 | import { WORKSPACES_ROUTES } from './features/workspaces'; | ||
48 | import AnnouncementScreen from './features/announcements/components/AnnouncementScreen'; | ||
49 | import { ANNOUNCEMENTS_ROUTES } from './features/announcements'; | ||
50 | 24 | ||
51 | // Add Polyfills | 25 | // Add Polyfills |
52 | smoothScroll.polyfill(); | 26 | smoothScroll.polyfill(); |
@@ -74,44 +48,7 @@ window.addEventListener('load', () => { | |||
74 | const preparedApp = ( | 48 | const preparedApp = ( |
75 | <Provider stores={stores} actions={actions}> | 49 | <Provider stores={stores} actions={actions}> |
76 | <I18N> | 50 | <I18N> |
77 | <Router history={history}> | 51 | <Routes history={history} /> |
78 | <Route path="/" component={AppLayoutContainer}> | ||
79 | <Route path={ANNOUNCEMENTS_ROUTES.TARGET} component={AnnouncementScreen} /> | ||
80 | <Route path="/settings" component={SettingsWindow}> | ||
81 | <IndexRedirect to="/settings/recipes" /> | ||
82 | <Route path="/settings/recipes" component={RecipesScreen} /> | ||
83 | <Route path="/settings/recipes/:filter" component={RecipesScreen} /> | ||
84 | <Route path="/settings/services" component={ServicesScreen} /> | ||
85 | <Route path="/settings/services/:action/:id" component={EditServiceScreen} /> | ||
86 | <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} /> | ||
87 | <Route path={WORKSPACES_ROUTES.EDIT} component={EditWorkspaceScreen} /> | ||
88 | <Route path="/settings/user" component={AccountScreen} /> | ||
89 | <Route path="/settings/user/edit" component={EditUserScreen} /> | ||
90 | <Route path="/settings/team" component={TeamScreen} /> | ||
91 | <Route path="/settings/app" component={EditSettingsScreen} /> | ||
92 | <Route path="/settings/invite" component={InviteSettingsScreen} /> | ||
93 | <Route path="/settings/support" component={SupportFerdiScreen} /> | ||
94 | </Route> | ||
95 | </Route> | ||
96 | <Route path="/auth" component={AuthLayoutContainer}> | ||
97 | <IndexRedirect to="/auth/welcome" /> | ||
98 | <Route path="/auth/welcome" component={WelcomeScreen} /> | ||
99 | <Route path="/auth/login" component={LoginScreen} /> | ||
100 | <Route path="/auth/locked" component={LockedScreen} /> | ||
101 | <Route path="/auth/server" component={ChangeServerScreen} /> | ||
102 | <Route path="/auth/signup"> | ||
103 | <IndexRedirect to="/auth/signup/form" /> | ||
104 | <Route path="/auth/signup/form" component={SignupScreen} /> | ||
105 | <Route path="/auth/signup/pricing" component={PricingScreen} /> | ||
106 | <Route path="/auth/signup/import" component={ImportScreen} /> | ||
107 | <Route path="/auth/signup/invite" component={InviteScreen} /> | ||
108 | </Route> | ||
109 | <Route path="/auth/password" component={PasswordScreen} /> | ||
110 | <Route path="/auth/logout" component={LoginScreen} /> | ||
111 | </Route> | ||
112 | <Route path="/payment/:url" component={SubscriptionPopupScreen} /> | ||
113 | <Route path="*" component={AppLayoutContainer} /> | ||
114 | </Router> | ||
115 | </I18N> | 52 | </I18N> |
116 | </Provider> | 53 | </Provider> |
117 | ); | 54 | ); |
diff --git a/src/components/auth/ChangeServer.js b/src/components/auth/ChangeServer.js index 433334b6c..68c2303a4 100644 --- a/src/components/auth/ChangeServer.js +++ b/src/components/auth/ChangeServer.js | |||
@@ -2,10 +2,12 @@ import React, { Component } from 'react'; | |||
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | |||
6 | import Form from '../../lib/Form'; | 5 | import Form from '../../lib/Form'; |
7 | import Input from '../ui/Input'; | 6 | import Input from '../ui/Input'; |
7 | import Select from '../ui/Select'; | ||
8 | import Button from '../ui/Button'; | 8 | import Button from '../ui/Button'; |
9 | import Infobox from '../ui/Infobox'; | ||
10 | import { url, required } from '../../helpers/validation-helpers'; | ||
9 | 11 | ||
10 | const messages = defineMessages({ | 12 | const messages = defineMessages({ |
11 | headline: { | 13 | headline: { |
@@ -16,10 +18,23 @@ const messages = defineMessages({ | |||
16 | id: 'changeserver.label', | 18 | id: 'changeserver.label', |
17 | defaultMessage: '!!!Server', | 19 | defaultMessage: '!!!Server', |
18 | }, | 20 | }, |
21 | warning: { | ||
22 | id: 'changeserver.warning', | ||
23 | defaultMessage: '!!!Extra settings offered by Ferdi will not be saved', | ||
24 | }, | ||
25 | customServerLabel: { | ||
26 | id: 'changeserver.customServerLabel', | ||
27 | defaultMessage: '!!!Custom server', | ||
28 | }, | ||
29 | urlError: { | ||
30 | id: 'changeserver.urlError', | ||
31 | defaultMessage: '!!!Enter a valid URL', | ||
32 | }, | ||
19 | submit: { | 33 | submit: { |
20 | id: 'changeserver.submit', | 34 | id: 'changeserver.submit', |
21 | defaultMessage: '!!!Submit', | 35 | defaultMessage: '!!!Submit', |
22 | }, | 36 | }, |
37 | |||
23 | }); | 38 | }); |
24 | 39 | ||
25 | export default @observer class ChangeServer extends Component { | 40 | export default @observer class ChangeServer extends Component { |
@@ -32,42 +47,75 @@ export default @observer class ChangeServer extends Component { | |||
32 | intl: intlShape, | 47 | intl: intlShape, |
33 | }; | 48 | }; |
34 | 49 | ||
50 | ferdiServer='https://api.getferdi.com'; | ||
51 | |||
52 | franzServer='https://api.franzinfra.com'; | ||
53 | |||
54 | defaultServers=[this.franzServer, this.ferdiServer]; | ||
55 | |||
35 | form = new Form({ | 56 | form = new Form({ |
36 | fields: { | 57 | fields: { |
37 | server: { | 58 | server: { |
38 | label: this.context.intl.formatMessage(messages.label), | 59 | label: this.context.intl.formatMessage(messages.label), |
60 | value: this.props.server, | ||
61 | options: [{ value: this.ferdiServer, label: 'Ferdi' }, { value: this.franzServer, label: 'Franz' }, { value: this.defaultServers.includes(this.props.server) ? '' : this.props.server, label: 'Custom' }], | ||
62 | }, | ||
63 | customServer: { | ||
64 | label: this.context.intl.formatMessage(messages.customServerLabel), | ||
39 | value: '', | 65 | value: '', |
66 | validators: [url, required], | ||
40 | }, | 67 | }, |
41 | }, | 68 | }, |
42 | }, this.context.intl); | 69 | }, this.context.intl); |
43 | 70 | ||
44 | componentDidMount() { | 71 | componentDidMount() { |
45 | this.form.$('server').value = this.props.server; | 72 | if (this.defaultServers.includes(this.props.server)) { |
73 | this.form.$('server').value = this.props.server; | ||
74 | } else { | ||
75 | this.form.$('server').value = ''; | ||
76 | this.form.$('customServer').value = this.props.server; | ||
77 | } | ||
46 | } | 78 | } |
47 | 79 | ||
48 | submit(e) { | 80 | submit(e) { |
49 | e.preventDefault(); | 81 | e.preventDefault(); |
50 | this.form.submit({ | 82 | this.form.submit({ |
51 | onSuccess: (form) => { | 83 | onSuccess: (form) => { |
84 | if (!this.defaultServers.includes(form.values().server)) { | ||
85 | form.$('server').onChange(form.values().customServer); | ||
86 | } | ||
52 | this.props.onSubmit(form.values()); | 87 | this.props.onSubmit(form.values()); |
53 | }, | 88 | }, |
54 | onError: () => { }, | 89 | onError: (form) => { |
90 | if (this.defaultServers.includes(form.values().server)) { | ||
91 | this.props.onSubmit(form.values()); | ||
92 | } | ||
93 | }, | ||
55 | }); | 94 | }); |
56 | } | 95 | } |
57 | 96 | ||
58 | render() { | 97 | render() { |
59 | const { form } = this; | 98 | const { form } = this; |
60 | const { intl } = this.context; | 99 | const { intl } = this.context; |
61 | |||
62 | return ( | 100 | return ( |
63 | <div className="auth__container"> | 101 | <div className="auth__container"> |
64 | <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> | 102 | <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> |
65 | <h1>{intl.formatMessage(messages.headline)}</h1> | 103 | <h1>{intl.formatMessage(messages.headline)}</h1> |
66 | 104 | {form.$('server').value === this.franzServer | |
67 | <Input | 105 | && ( |
68 | field={form.$('server')} | 106 | <Infobox type="warning"> |
69 | focus | 107 | {intl.formatMessage(messages.warning)} |
70 | /> | 108 | </Infobox> |
109 | )} | ||
110 | <Select field={form.$('server')} /> | ||
111 | {!this.defaultServers.includes(form.$('server').value) | ||
112 | && ( | ||
113 | <Input | ||
114 | placeholder="Custom Server" | ||
115 | onChange={e => this.submit(e)} | ||
116 | field={form.$('customServer')} | ||
117 | /> | ||
118 | )} | ||
71 | <Button | 119 | <Button |
72 | type="submit" | 120 | type="submit" |
73 | className="auth__button" | 121 | className="auth__button" |
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js index 6142e78c6..c5e8a5aad 100644 --- a/src/components/auth/Locked.js +++ b/src/components/auth/Locked.js | |||
@@ -8,6 +8,7 @@ import Form from '../../lib/Form'; | |||
8 | import Input from '../ui/Input'; | 8 | import Input from '../ui/Input'; |
9 | import Button from '../ui/Button'; | 9 | import Button from '../ui/Button'; |
10 | import Infobox from '../ui/Infobox'; | 10 | import Infobox from '../ui/Infobox'; |
11 | import { isMac } from '../../environment'; | ||
11 | 12 | ||
12 | import { globalError as globalErrorPropType } from '../../prop-types'; | 13 | import { globalError as globalErrorPropType } from '../../prop-types'; |
13 | 14 | ||
@@ -100,7 +101,7 @@ export default @observer class Locked extends Component { | |||
100 | useTouchIdToUnlock, | 101 | useTouchIdToUnlock, |
101 | } = this.props; | 102 | } = this.props; |
102 | 103 | ||
103 | const touchIdEnabled = useTouchIdToUnlock && systemPreferences.canPromptTouchID(); | 104 | const touchIdEnabled = isMac ? (useTouchIdToUnlock && systemPreferences.canPromptTouchID()) : false; |
104 | const submitButtonLabel = touchIdEnabled ? intl.formatMessage(messages.unlockWithPassword) : intl.formatMessage(messages.submitButtonLabel); | 105 | const submitButtonLabel = touchIdEnabled ? intl.formatMessage(messages.unlockWithPassword) : intl.formatMessage(messages.submitButtonLabel); |
105 | 106 | ||
106 | return ( | 107 | return ( |
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index bd10ccb4a..90bbe86e9 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js | |||
@@ -6,11 +6,14 @@ import { inject, observer } from 'mobx-react'; | |||
6 | import { Link } from 'react-router'; | 6 | import { Link } from 'react-router'; |
7 | 7 | ||
8 | import Tabbar from '../services/tabs/Tabbar'; | 8 | import Tabbar from '../services/tabs/Tabbar'; |
9 | import { ctrlKey } from '../../environment'; | 9 | import { ctrlKey, isMac } from '../../environment'; |
10 | import { workspaceStore } from '../../features/workspaces'; | 10 | import { workspaceStore } from '../../features/workspaces'; |
11 | import { todosStore } from '../../features/todos'; | 11 | import { todosStore } from '../../features/todos'; |
12 | import { todoActions } from '../../features/todos/actions'; | 12 | import { todoActions } from '../../features/todos/actions'; |
13 | 13 | ||
14 | // Platform specific shortcut keys | ||
15 | const settingsShortcutKey = isMac ? ',' : 'P'; | ||
16 | |||
14 | const messages = defineMessages({ | 17 | const messages = defineMessages({ |
15 | settings: { | 18 | settings: { |
16 | id: 'sidebar.settings', | 19 | id: 'sidebar.settings', |
@@ -189,7 +192,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp | |||
189 | type="button" | 192 | type="button" |
190 | onClick={() => openSettings({ path: 'app' })} | 193 | onClick={() => openSettings({ path: 'app' })} |
191 | className="sidebar__button sidebar__button--settings" | 194 | className="sidebar__button sidebar__button--settings" |
192 | data-tip={`${intl.formatMessage(messages.settings)} (${ctrlKey}+,)`} | 195 | data-tip={`${intl.formatMessage(messages.settings)} (${ctrlKey}+${settingsShortcutKey})`} |
193 | > | 196 | > |
194 | <i className="mdi mdi-settings" /> | 197 | <i className="mdi mdi-settings" /> |
195 | { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE | 198 | { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE |
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js index 210a6ab6b..2e3354279 100644 --- a/src/components/services/content/ServiceWebview.js +++ b/src/components/services/content/ServiceWebview.js | |||
@@ -79,7 +79,7 @@ class ServiceWebview extends Component { | |||
79 | }} | 79 | }} |
80 | onUpdateTargetUrl={this.updateTargetUrl} | 80 | onUpdateTargetUrl={this.updateTargetUrl} |
81 | useragent={service.userAgent} | 81 | useragent={service.userAgent} |
82 | disablewebsecurity={service.recipe.disablewebsecurity} | 82 | disablewebsecurity={service.recipe.disablewebsecurity ? true : undefined} |
83 | allowpopups | 83 | allowpopups |
84 | /> | 84 | /> |
85 | ); | 85 | ); |
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index ea7a66a62..efa5fa60c 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js | |||
@@ -7,7 +7,7 @@ import classnames from 'classnames'; | |||
7 | import { SortableElement } from 'react-sortable-hoc'; | 7 | import { SortableElement } from 'react-sortable-hoc'; |
8 | 8 | ||
9 | import ServiceModel from '../../../models/Service'; | 9 | import ServiceModel from '../../../models/Service'; |
10 | import { isDevMode, ctrlKey } from '../../../environment'; | 10 | import { ctrlKey } from '../../../environment'; |
11 | 11 | ||
12 | const { Menu } = remote; | 12 | const { Menu } = remote; |
13 | 13 | ||
@@ -119,14 +119,10 @@ class TabItem extends Component { | |||
119 | click: () => (service.isEnabled ? disableService() : enableService()), | 119 | click: () => (service.isEnabled ? disableService() : enableService()), |
120 | }, { | 120 | }, { |
121 | type: 'separator', | 121 | type: 'separator', |
122 | }, { | ||
123 | label: intl.formatMessage(messages.deleteService), | ||
124 | click: () => deleteService(), | ||
122 | }]; | 125 | }]; |
123 | |||
124 | if (isDevMode) { | ||
125 | menuTemplate.push({ | ||
126 | label: intl.formatMessage(messages.deleteService), | ||
127 | click: () => deleteService(), | ||
128 | }); | ||
129 | } | ||
130 | const menu = Menu.buildFromTemplate(menuTemplate); | 126 | const menu = Menu.buildFromTemplate(menuTemplate); |
131 | 127 | ||
132 | let notificationBadge = null; | 128 | let notificationBadge = null; |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 8faea708b..50358c36f 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -367,7 +367,7 @@ export default @observer class EditSettingsForm extends Component { | |||
367 | <Toggle field={form.$('lockingFeatureEnabled')} /> | 367 | <Toggle field={form.$('lockingFeatureEnabled')} /> |
368 | {lockingFeatureEnabled && ( | 368 | {lockingFeatureEnabled && ( |
369 | <> | 369 | <> |
370 | {systemPreferences.canPromptTouchID() && ( | 370 | {isMac && systemPreferences.canPromptTouchID() && ( |
371 | <Toggle field={form.$('useTouchIdToUnlock')} /> | 371 | <Toggle field={form.$('useTouchIdToUnlock')} /> |
372 | )} | 372 | )} |
373 | 373 | ||
diff --git a/src/config.js b/src/config.js index 2467ab706..b8af16419 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -60,6 +60,7 @@ export const TODO_APPS = { | |||
60 | 'https://app.nozbe.com/#login': 'Nozbe', | 60 | 'https://app.nozbe.com/#login': 'Nozbe', |
61 | 'https://www.rememberthemilk.com/login/': 'Remember The Milk', | 61 | 'https://www.rememberthemilk.com/login/': 'Remember The Milk', |
62 | 'https://desktop.any.do/': 'Any.do', | 62 | 'https://desktop.any.do/': 'Any.do', |
63 | 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1': 'Google Tasks', | ||
63 | isUsingCustomTodoService: 'Other service', | 64 | isUsingCustomTodoService: 'Other service', |
64 | }; | 65 | }; |
65 | 66 | ||
diff --git a/src/containers/auth/LockedScreen.js b/src/containers/auth/LockedScreen.js index aced64a98..a04107072 100644 --- a/src/containers/auth/LockedScreen.js +++ b/src/containers/auth/LockedScreen.js | |||
@@ -4,13 +4,9 @@ import { inject, observer } from 'mobx-react'; | |||
4 | import Locked from '../../components/auth/Locked'; | 4 | import Locked from '../../components/auth/Locked'; |
5 | import SettingsStore from '../../stores/SettingsStore'; | 5 | import SettingsStore from '../../stores/SettingsStore'; |
6 | 6 | ||
7 | import { globalError as globalErrorPropType } from '../../prop-types'; | 7 | import { hash } from '../../helpers/password-helpers'; |
8 | 8 | ||
9 | export default @inject('stores', 'actions') @observer class LockedScreen extends Component { | 9 | export default @inject('stores', 'actions') @observer class LockedScreen extends Component { |
10 | static propTypes = { | ||
11 | error: globalErrorPropType.isRequired, | ||
12 | }; | ||
13 | |||
14 | state = { | 10 | state = { |
15 | error: false, | 11 | error: false, |
16 | } | 12 | } |
@@ -30,7 +26,7 @@ export default @inject('stores', 'actions') @observer class LockedScreen extends | |||
30 | correctPassword = ''; | 26 | correctPassword = ''; |
31 | } | 27 | } |
32 | 28 | ||
33 | if (String(password) === String(correctPassword)) { | 29 | if (hash(String(password)) === String(correctPassword)) { |
34 | this.props.actions.settings.update({ | 30 | this.props.actions.settings.update({ |
35 | type: 'app', | 31 | type: 'app', |
36 | data: { | 32 | data: { |
@@ -56,17 +52,23 @@ export default @inject('stores', 'actions') @observer class LockedScreen extends | |||
56 | } | 52 | } |
57 | 53 | ||
58 | render() { | 54 | render() { |
59 | const { stores, error } = this.props; | 55 | const { stores } = this.props; |
60 | const { useTouchIdToUnlock } = this.props.stores.settings.all.app; | 56 | const { useTouchIdToUnlock } = this.props.stores.settings.all.app; |
61 | 57 | ||
62 | return ( | 58 | return ( |
63 | <Locked | 59 | <div className="auth"> |
64 | onSubmit={this.onSubmit} | 60 | <div className="auth__layout"> |
65 | unlock={this.unlock} | 61 | <div className="auth__container"> |
66 | useTouchIdToUnlock={useTouchIdToUnlock} | 62 | <Locked |
67 | isSubmitting={stores.user.loginRequest.isExecuting} | 63 | onSubmit={this.onSubmit} |
68 | error={this.state.error || error} | 64 | unlock={this.unlock} |
69 | /> | 65 | useTouchIdToUnlock={useTouchIdToUnlock} |
66 | isSubmitting={stores.user.loginRequest.isExecuting} | ||
67 | error={this.state.error || {}} | ||
68 | /> | ||
69 | </div> | ||
70 | </div> | ||
71 | </div> | ||
70 | ); | 72 | ); |
71 | } | 73 | } |
72 | } | 74 | } |
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index f6c2d4360..3dba3bc11 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -16,6 +16,7 @@ import { | |||
16 | import { config as spellcheckerConfig } from '../../features/spellchecker'; | 16 | import { config as spellcheckerConfig } from '../../features/spellchecker'; |
17 | 17 | ||
18 | import { getSelectOptions } from '../../helpers/i18n-helpers'; | 18 | import { getSelectOptions } from '../../helpers/i18n-helpers'; |
19 | import { hash } from '../../helpers/password-helpers'; | ||
19 | 20 | ||
20 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; | 21 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; |
21 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 22 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
@@ -185,6 +186,14 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
185 | intl: intlShape, | 186 | intl: intlShape, |
186 | }; | 187 | }; |
187 | 188 | ||
189 | constructor(props) { | ||
190 | super(props); | ||
191 | |||
192 | this.state = { | ||
193 | lockedPassword: '', | ||
194 | }; | ||
195 | } | ||
196 | |||
188 | onSubmit(settingsData) { | 197 | onSubmit(settingsData) { |
189 | const { todos, workspaces } = this.props.stores; | 198 | const { todos, workspaces } = this.props.stores; |
190 | const { | 199 | const { |
@@ -195,6 +204,10 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
195 | workspaces: workspaceActions, | 204 | workspaces: workspaceActions, |
196 | } = this.props.actions; | 205 | } = this.props.actions; |
197 | 206 | ||
207 | this.setState({ | ||
208 | lockedPassword: settingsData.lockedPassword, | ||
209 | }); | ||
210 | |||
198 | app.launchOnStartup({ | 211 | app.launchOnStartup({ |
199 | enable: settingsData.autoLaunchOnStart, | 212 | enable: settingsData.autoLaunchOnStart, |
200 | openInBackground: settingsData.autoLaunchInBackground, | 213 | openInBackground: settingsData.autoLaunchInBackground, |
@@ -217,7 +230,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
217 | predefinedTodoServer: settingsData.predefinedTodoServer, | 230 | predefinedTodoServer: settingsData.predefinedTodoServer, |
218 | customTodoServer: settingsData.customTodoServer, | 231 | customTodoServer: settingsData.customTodoServer, |
219 | lockingFeatureEnabled: settingsData.lockingFeatureEnabled, | 232 | lockingFeatureEnabled: settingsData.lockingFeatureEnabled, |
220 | lockedPassword: settingsData.lockedPassword, | 233 | lockedPassword: hash(String(settingsData.lockedPassword)), |
221 | useTouchIdToUnlock: settingsData.useTouchIdToUnlock, | 234 | useTouchIdToUnlock: settingsData.useTouchIdToUnlock, |
222 | inactivityLock: settingsData.inactivityLock, | 235 | inactivityLock: settingsData.inactivityLock, |
223 | scheduledDNDEnabled: settingsData.scheduledDNDEnabled, | 236 | scheduledDNDEnabled: settingsData.scheduledDNDEnabled, |
@@ -273,6 +286,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
273 | app, settings, user, todos, workspaces, | 286 | app, settings, user, todos, workspaces, |
274 | } = this.props.stores; | 287 | } = this.props.stores; |
275 | const { intl } = this.context; | 288 | const { intl } = this.context; |
289 | const { lockedPassword } = this.state; | ||
276 | 290 | ||
277 | const locales = getSelectOptions({ | 291 | const locales = getSelectOptions({ |
278 | locales: APP_LOCALES, | 292 | locales: APP_LOCALES, |
@@ -395,7 +409,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
395 | }, | 409 | }, |
396 | lockedPassword: { | 410 | lockedPassword: { |
397 | label: intl.formatMessage(messages.lockPassword), | 411 | label: intl.formatMessage(messages.lockPassword), |
398 | value: settings.all.app.lockedPassword, | 412 | value: lockedPassword, |
399 | default: '', | 413 | default: '', |
400 | type: 'password', | 414 | type: 'password', |
401 | }, | 415 | }, |
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js index 2626186e9..c612702b0 100644 --- a/src/features/todos/components/TodosWebview.js +++ b/src/features/todos/components/TodosWebview.js | |||
@@ -12,15 +12,19 @@ import SettingsStore from '../../../stores/SettingsStore'; | |||
12 | import Appear from '../../../components/ui/effects/Appear'; | 12 | import Appear from '../../../components/ui/effects/Appear'; |
13 | import UpgradeButton from '../../../components/ui/UpgradeButton'; | 13 | import UpgradeButton from '../../../components/ui/UpgradeButton'; |
14 | 14 | ||
15 | import userAgent from '../../../helpers/userAgent-helpers'; | ||
16 | |||
15 | // NOTE: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url | 17 | // NOTE: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url |
16 | function validURL(str) { | 18 | function validURL(str) { |
17 | const pattern = new RegExp('^(https?:\\/\\/)?' // protocol | 19 | let url; |
18 | + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' // domain name | 20 | |
19 | + '((\\d{1,3}\\.){3}\\d{1,3}))' // OR ip (v4) address | 21 | try { |
20 | + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' // port and path | 22 | url = new URL(str); |
21 | + '(\\?[;&a-z\\d%_.~+=-]*)?' // query string | 23 | } catch (_) { |
22 | + '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator | 24 | return false; |
23 | return !!pattern.test(str); | 25 | } |
26 | |||
27 | return url.protocol === 'http:' || url.protocol === 'https:'; | ||
24 | } | 28 | } |
25 | 29 | ||
26 | const messages = defineMessages({ | 30 | const messages = defineMessages({ |
@@ -126,6 +130,11 @@ class TodosWebview extends Component { | |||
126 | this.node.addEventListener('mousemove', this.resizePanel.bind(this)); | 130 | this.node.addEventListener('mousemove', this.resizePanel.bind(this)); |
127 | this.node.addEventListener('mouseup', this.stopResize.bind(this)); | 131 | this.node.addEventListener('mouseup', this.stopResize.bind(this)); |
128 | this.node.addEventListener('mouseleave', this.stopResize.bind(this)); | 132 | this.node.addEventListener('mouseleave', this.stopResize.bind(this)); |
133 | |||
134 | const webViewInstance = this; | ||
135 | this.webview.addEventListener('dom-ready', () => { | ||
136 | webViewInstance.webview.setUserAgent(userAgent(true)); | ||
137 | }); | ||
129 | } | 138 | } |
130 | 139 | ||
131 | startResize = (event) => { | 140 | startResize = (event) => { |
diff --git a/src/helpers/userAgent-helpers.js b/src/helpers/userAgent-helpers.js index 15edc1054..7b994c7d4 100644 --- a/src/helpers/userAgent-helpers.js +++ b/src/helpers/userAgent-helpers.js | |||
@@ -9,7 +9,6 @@ const ferdiVersion = remote && remote.app ? remote.app.getVersion() : app.getVer | |||
9 | 9 | ||
10 | function macOS() { | 10 | function macOS() { |
11 | const version = macosVersion(); | 11 | const version = macosVersion(); |
12 | |||
13 | return `Macintosh; Intel Mac OS X ${version.replace(/\./g, '_')}`; | 12 | return `Macintosh; Intel Mac OS X ${version.replace(/\./g, '_')}`; |
14 | } | 13 | } |
15 | 14 | ||
@@ -20,7 +19,7 @@ function windows() { | |||
20 | } | 19 | } |
21 | 20 | ||
22 | function linux() { | 21 | function linux() { |
23 | return 'X11; Ubuntu; Linux x86_64'; | 22 | return 'X11; Linux x86_64'; |
24 | } | 23 | } |
25 | 24 | ||
26 | export default function userAgent(removeChromeVersion = false) { | 25 | export default function userAgent(removeChromeVersion = false) { |
@@ -34,12 +33,17 @@ export default function userAgent(removeChromeVersion = false) { | |||
34 | platformString = linux(); | 33 | platformString = linux(); |
35 | } | 34 | } |
36 | 35 | ||
36 | let chromeVersion = 'Chrome'; | ||
37 | if (!removeChromeVersion) { | ||
38 | chromeVersion = `Chrome/${process.versions.chrome}`; | ||
39 | } | ||
40 | |||
37 | let applicationString = ''; | 41 | let applicationString = ''; |
38 | if (!removeChromeVersion) { | 42 | if (!removeChromeVersion) { |
39 | applicationString = ` Ferdi/${ferdiVersion} (Electron ${process.versions.electron})`; | 43 | applicationString = ` Ferdi/${ferdiVersion} Electron/${process.versions.electron}`; |
40 | } | 44 | } |
41 | 45 | ||
42 | // TODO: Update AppleWebKit and Safari version after electron update | 46 | // Chrome is pinned to WebKit 537.36, the latest version before hard forking to Blink. |
43 | return `Mozilla/5.0 (${platformString}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome${!removeChromeVersion ? `/${process.versions.chrome}` : ''} Safari/537.36${applicationString}`; | 47 | return `Mozilla/5.0 (${platformString}) AppleWebKit/537.36 (KHTML, like Gecko) ${chromeVersion} Safari/537.36${applicationString}`; |
44 | // Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) old-airport-include/1.0.0 Chrome Electron/7.1.7 Safari/537.36 | 48 | // Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36 Ferdi/5.5.1-nightly.13 Electron/8.2.3 |
45 | } | 49 | } |
diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/af.json +++ b/src/i18n/locales/af.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index 88f970da9..baceec651 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "إعادة التØميل", | 2 | "app.errorHandler.action": "إعادة التØميل", |
3 | "app.errorHandler.headline": "لقد Øدث خطب ما", | 3 | "app.errorHandler.headline": "لقد Øدث خطب ما", |
4 | "changeserver.customServerLabel": "خادم مخصص", | ||
4 | "changeserver.headline": "تغيير الخادم", | 5 | "changeserver.headline": "تغيير الخادم", |
5 | "changeserver.label": "خادم", | 6 | "changeserver.label": "خادم", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "إرسال", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "إعادة تØميل الخدمة", | 10 | "connectionLostBanner.cta": "إعادة تØميل الخدمة", |
8 | "connectionLostBanner.informationLink": "ماذا Øدث؟", | 11 | "connectionLostBanner.informationLink": "ماذا Øدث؟", |
9 | "connectionLostBanner.message": "أوه لا! Ùقد Ùردي الاتصال بـ.", | 12 | "connectionLostBanner.message": "أوه لا! Ùقد Ùردي الاتصال بـ.", |
@@ -37,7 +40,7 @@ | |||
37 | "feature.publishDebugInfo.privacy": "سياسة الخصوصية", | 40 | "feature.publishDebugInfo.privacy": "سياسة الخصوصية", |
38 | "feature.publishDebugInfo.publish": "قبول ونشر", | 41 | "feature.publishDebugInfo.publish": "قبول ونشر", |
39 | "feature.publishDebugInfo.published": "تم نشر سجل تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ الخاص بك وهو Ù…ØªØ§Ø Ø§Ù„Ø¢Ù† ÙÙŠ", | 42 | "feature.publishDebugInfo.published": "تم نشر سجل تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ الخاص بك وهو Ù…ØªØ§Ø Ø§Ù„Ø¢Ù† ÙÙŠ", |
40 | "feature.publishDebugInfo.terms": "Terms of service", | 43 | "feature.publishDebugInfo.terms": "بنود الخدمة", |
41 | "feature.publishDebugInfo.title": "نشر معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡", | 44 | "feature.publishDebugInfo.title": "نشر معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡", |
42 | "feature.quickSwitch.info": "Øدد خدمة من خلال زر تاب، ↑ Ùˆ ↓. اÙØªØ Ø§Ù„Ø®Ø¯Ù…Ø© بالظغط على زر الدخول.", | 45 | "feature.quickSwitch.info": "Øدد خدمة من خلال زر تاب، ↑ Ùˆ ↓. اÙØªØ Ø§Ù„Ø®Ø¯Ù…Ø© بالظغط على زر الدخول.", |
43 | "feature.quickSwitch.search": "بØØ«...", | 46 | "feature.quickSwitch.search": "بØØ«...", |
@@ -121,7 +124,7 @@ | |||
121 | "menu.edit.copy": "نسخ", | 124 | "menu.edit.copy": "نسخ", |
122 | "menu.edit.cut": "قص", | 125 | "menu.edit.cut": "قص", |
123 | "menu.edit.delete": "ØØ°Ù", | 126 | "menu.edit.delete": "ØØ°Ù", |
124 | "menu.edit.emojiSymbols": "Emoji & Symbols", | 127 | "menu.edit.emojiSymbols": "الابتسامات والرموز التعبيرية", |
125 | "menu.edit.findInPage": "البØØ« ÙÙŠ الصÙØØ©", | 128 | "menu.edit.findInPage": "البØØ« ÙÙŠ الصÙØØ©", |
126 | "menu.edit.paste": "لصق", | 129 | "menu.edit.paste": "لصق", |
127 | "menu.edit.pasteAndMatchStyle": "لصق ومطابقة النمط", | 130 | "menu.edit.pasteAndMatchStyle": "لصق ومطابقة النمط", |
@@ -134,7 +137,7 @@ | |||
134 | "menu.edit.undo": "تراجع", | 137 | "menu.edit.undo": "تراجع", |
135 | "menu.file": "الملÙ", | 138 | "menu.file": "الملÙ", |
136 | "menu.help": "مساعدة", | 139 | "menu.help": "مساعدة", |
137 | "menu.help.changelog": "سÙجل التغييرات", | 140 | "menu.help.changelog": "سÙجل التغيرات", |
138 | "menu.help.debugInfo": "نسخ معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡", | 141 | "menu.help.debugInfo": "نسخ معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡", |
139 | "menu.help.debugInfoCopiedBody": "تم نسخ معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ الخاصة بك إلى الØاÙظة.", | 142 | "menu.help.debugInfoCopiedBody": "تم نسخ معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ الخاصة بك إلى الØاÙظة.", |
140 | "menu.help.debugInfoCopiedHeadline": "معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ Ù„Ùردي", | 143 | "menu.help.debugInfoCopiedHeadline": "معلومات تصØÙŠØ Ø§Ù„Ø£Ø®Ø·Ø§Ø¡ Ù„Ùردي", |
@@ -164,49 +167,49 @@ | |||
164 | "menu.view.toggleDevTools": "ÙØªØ Ø£Ø¯ÙˆØ§Øª المطور", | 167 | "menu.view.toggleDevTools": "ÙØªØ Ø£Ø¯ÙˆØ§Øª المطور", |
165 | "menu.view.toggleFullScreen": "تÙعيل وضع ملء الشاشة", | 168 | "menu.view.toggleFullScreen": "تÙعيل وضع ملء الشاشة", |
166 | "menu.view.toggleServiceDevTools": "ÙØªØ Ø£Ø¯ÙˆØ§Øª المطور للخدمة", | 169 | "menu.view.toggleServiceDevTools": "ÙØªØ Ø£Ø¯ÙˆØ§Øª المطور للخدمة", |
167 | "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", | 170 | "menu.view.toggleTodosDevTools": "ادخل إلى أدوات مطوري تودوس", |
168 | "menu.view.zoomIn": "Zoom In", | 171 | "menu.view.zoomIn": "تكبير", |
169 | "menu.view.zoomOut": "Zoom Out", | 172 | "menu.view.zoomOut": "تصغير", |
170 | "menu.window": "Window", | 173 | "menu.window": "الناÙذة", |
171 | "menu.window.close": "Close", | 174 | "menu.window.close": "إغلاق", |
172 | "menu.window.minimize": "Minimize", | 175 | "menu.window.minimize": "تصغير الناÙذة", |
173 | "menu.workspaces": "Workspaces", | 176 | "menu.workspaces": "مساØات٠العمل", |
174 | "menu.workspaces.addNewWorkspace": "Add New Workspace...", | 177 | "menu.workspaces.addNewWorkspace": "إضاÙØ© مساØØ© عمل جديدة...", |
175 | "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", | 178 | "menu.workspaces.closeWorkspaceDrawer": "غلق٠دÙرج٠مساØØ© العمل", |
176 | "menu.workspaces.defaultWorkspace": "All services", | 179 | "menu.workspaces.defaultWorkspace": "جميع الخدمات", |
177 | "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", | 180 | "menu.workspaces.openWorkspaceDrawer": "ÙتØ٠دÙرج٠مساØØ© العمل", |
178 | "password.email.label": "البريد الإلكتروني", | 181 | "password.email.label": "البريد الإلكتروني", |
179 | "password.headline": "إعادة تعيين كلمة المرور", | 182 | "password.headline": "إعادة تعيين كلمة المرور", |
180 | "password.link.login": "Sign in to your account", | 183 | "password.link.login": "سجل الدخول Ù„Øسابك", |
181 | "password.link.signup": "إنشاء Øساب مجاني", | 184 | "password.link.signup": "إنشاء Øساب مجاني", |
182 | "password.noUser": "No user with that email address was found", | 185 | "password.noUser": "لم ÙŠÙعثر على Ù…Ùستخدم٠بعنوان٠البريد٠هذا", |
183 | "password.submit.label": "Submit", | 186 | "password.submit.label": "إرسال", |
184 | "password.successInfo": "Please check your email", | 187 | "password.successInfo": "رجاءً تØقق من عنوان بريدك الإلكتروني", |
185 | "premiumFeature.button.upgradeAccount": "ترقية الØساب", | 188 | "premiumFeature.button.upgradeAccount": "ترقية الØساب", |
186 | "pricing.features.accountSync": "Account Synchronisation", | 189 | "pricing.features.accountSync": "مزامنة٠الØساب", |
187 | "pricing.features.adFree": "Forever ad-free", | 190 | "pricing.features.adFree": "خال٠من الإعلانات للأبد", |
188 | "pricing.features.appDelays": "No Waiting Screens", | 191 | "pricing.features.appDelays": "لا شاشات٠انتظار", |
189 | "pricing.features.appDelaysEnabled": "Occasional Waiting Screens", | 192 | "pricing.features.appDelaysEnabled": "شاشات٠انتظار هنا وهنا", |
190 | "pricing.features.customWebsites": "Add Custom Websites", | 193 | "pricing.features.customWebsites": "إضاÙØ© مواقع مخصصة", |
191 | "pricing.features.desktopNotifications": "Desktop Notifications", | 194 | "pricing.features.desktopNotifications": "إشعارات Ø³Ø·Ø Ø§Ù„Ù…ÙƒØªØ¨", |
192 | "pricing.features.onPremise": "On-premise & other Hosted Services", | 195 | "pricing.features.onPremise": "On-premise & other Hosted Services", |
193 | "pricing.features.recipes": "Choose from more than 70 Services", | 196 | "pricing.features.recipes": "اختر من بين ما يزيد على 70 خدمة", |
194 | "pricing.features.serviceProxies": "Service Proxies", | 197 | "pricing.features.serviceProxies": "وكلاء الخدمة", |
195 | "pricing.features.spellchecker": "Spellchecker support", | 198 | "pricing.features.spellchecker": "دعم المدقق الإملائي", |
196 | "pricing.features.teamManagement": "Team Management", | 199 | "pricing.features.teamManagement": "Ùريق الإدارة", |
197 | "pricing.features.thirdPartyServices": "Install 3rd party services", | 200 | "pricing.features.thirdPartyServices": "تنصيب خدمات الطر٠الثالث", |
198 | "pricing.features.unlimitedServices": "Add unlimited services", | 201 | "pricing.features.unlimitedServices": "إمكانية إضاÙØ© خدمات غير Ù…Øدودة", |
199 | "pricing.features.upToSixServices": "Add up to 6 services", | 202 | "pricing.features.upToSixServices": "إضاÙØ© ما يصل إلى 6 خدمات", |
200 | "pricing.features.upToThreeServices": "Add up to 3 services", | 203 | "pricing.features.upToThreeServices": "إضاÙØ© ما يصل إلى 3 خدمات", |
201 | "pricing.features.workspaces": "Workspaces", | 204 | "pricing.features.workspaces": "مساØات٠العمل", |
202 | "pricing.plan.free": "Ferdi Free", | 205 | "pricing.plan.free": "Ùيردي المجاني", |
203 | "pricing.plan.legacy": "Ferdi Premium", | 206 | "pricing.plan.legacy": "Ùيردي الإصدار الممتاز", |
204 | "pricing.plan.personal": "Ferdi Personal", | 207 | "pricing.plan.personal": "Ùيردي الإصدار الشخصي", |
205 | "pricing.plan.personal-monthly": "Ferdi Personal Monthly", | 208 | "pricing.plan.personal-monthly": "Ùيردي الإصدار الشخصي الشهري", |
206 | "pricing.plan.personal-yearly": "Ferdi Personal Yearly", | 209 | "pricing.plan.personal-yearly": "Ùيردي الإصدار الشخصي السنوي", |
207 | "pricing.plan.pro": "Ferdi Professional", | 210 | "pricing.plan.pro": "Ùيردي الإصدار الاØتراÙÙŠ", |
208 | "pricing.plan.pro-monthly": "Ferdi Professional Monthly", | 211 | "pricing.plan.pro-monthly": "Ùيردي الإصدار الاØتراÙÙŠ الشهري", |
209 | "pricing.plan.pro-yearly": "Ferdi Professional Yearly", | 212 | "pricing.plan.pro-yearly": "Ùيردي الإصدار الاØتراÙÙŠ السنوي", |
210 | "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", | 213 | "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", |
211 | "pricing.trial.cta.skip": "Continue to Ferdi", | 214 | "pricing.trial.cta.skip": "Continue to Ferdi", |
212 | "pricing.trial.cta.start": "Start using Ferdi", | 215 | "pricing.trial.cta.start": "Start using Ferdi", |
@@ -220,20 +223,20 @@ | |||
220 | "pricing.trial.terms.headline": "No strings attached", | 223 | "pricing.trial.terms.headline": "No strings attached", |
221 | "pricing.trial.terms.noCreditCard": "No credit card required", | 224 | "pricing.trial.terms.noCreditCard": "No credit card required", |
222 | "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", | 225 | "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", |
223 | "service.crashHandler.action": "Reload {name}", | 226 | "service.crashHandler.action": "أعادة تØميل {name}", |
224 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", | 227 | "service.crashHandler.autoReload": "Ù…Øاولة الاستعادة التلقائية {name} ÙÙŠ غضون {seconds} ثانية", |
225 | "service.crashHandler.headline": "Oh no!", | 228 | "service.crashHandler.headline": "أوه لا!", |
226 | "service.crashHandler.text": "{name} has caused an error.", | 229 | "service.crashHandler.text": "{name} تسبب ÙÙŠ خطأ.", |
227 | "service.disabledHandler.action": "Enable {name}", | 230 | "service.disabledHandler.action": "تمكين {name}", |
228 | "service.disabledHandler.headline": "{name} is disabled", | 231 | "service.disabledHandler.headline": "{name} معطل", |
229 | "service.errorHandler.action": "Reload {name}", | 232 | "service.errorHandler.action": "أعادة تØميل {name}", |
230 | "service.errorHandler.editAction": "Edit {name}", | 233 | "service.errorHandler.editAction": "تØرير {name}", |
231 | "service.errorHandler.headline": "Oh no!", | 234 | "service.errorHandler.headline": "أوه لا!", |
232 | "service.errorHandler.message": "Error", | 235 | "service.errorHandler.message": "خطأ", |
233 | "service.errorHandler.text": "{name} has failed to load.", | 236 | "service.errorHandler.text": "Ùشل {name} ÙÙŠ التØميل.", |
234 | "service.restrictedHandler.action": "ترقية الØساب", | 237 | "service.restrictedHandler.action": "ترقية الØساب", |
235 | "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required", | 238 | "service.restrictedHandler.customUrl.headline": "مطلوب الخطة الاØتراÙية Ù„Ùيردي", |
236 | "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.", | 239 | "service.restrictedHandler.customUrl.text": "يرجى الترقية إلى خطة Ùيردي الاØتراÙية لاستخدام العناوين الإلكترونية المخصصة وخدمات الاستضاÙØ© الذاتية.", |
237 | "service.restrictedHandler.serviceLimit.headline": "لقد وصلت إلى Øد الخدمة الخاص بك.", | 240 | "service.restrictedHandler.serviceLimit.headline": "لقد وصلت إلى Øد الخدمة الخاص بك.", |
238 | "service.restrictedHandler.serviceLimit.text": "الرجاء ترقية Øسابك لاستخدام أكثر من {count} خدمة.", | 241 | "service.restrictedHandler.serviceLimit.text": "الرجاء ترقية Øسابك لاستخدام أكثر من {count} خدمة.", |
239 | "service.webviewLoader.loading": "جاري تØميل {service}", | 242 | "service.webviewLoader.loading": "جاري تØميل {service}", |
@@ -257,7 +260,7 @@ | |||
257 | "settings.account.headlineInvoices": "الÙواتير", | 260 | "settings.account.headlineInvoices": "الÙواتير", |
258 | "settings.account.headlinePassword": "تغيير كلمة المرور", | 261 | "settings.account.headlinePassword": "تغيير كلمة المرور", |
259 | "settings.account.headlineProfile": "تØديث المل٠الشخصي", | 262 | "settings.account.headlineProfile": "تØديث المل٠الشخصي", |
260 | "settings.account.headlineSubscription": "الإشتراك الخاصة بك", | 263 | "settings.account.headlineSubscription": "الاشتراك الخاص بك", |
261 | "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial", | 264 | "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial", |
262 | "settings.account.headlineUpgradeAccount": "قم بترقية Øسابك واØصل على تجربة Ùردي الكاملة", | 265 | "settings.account.headlineUpgradeAccount": "قم بترقية Øسابك واØصل على تجربة Ùردي الكاملة", |
263 | "settings.account.invoiceDownload": "تنزيل", | 266 | "settings.account.invoiceDownload": "تنزيل", |
@@ -276,7 +279,7 @@ | |||
276 | "settings.app.buttonInstallUpdate": "إعادة التشغيل وتثبيت التØديث", | 279 | "settings.app.buttonInstallUpdate": "إعادة التشغيل وتثبيت التØديث", |
277 | "settings.app.buttonSearchForUpdate": "التØقق من وجود تØديثات", | 280 | "settings.app.buttonSearchForUpdate": "التØقق من وجود تØديثات", |
278 | "settings.app.cacheInfo": "التخزين المؤقت Ù„Ùردي يستخدم Øاليا {size} من مساØØ© القرص.", | 281 | "settings.app.cacheInfo": "التخزين المؤقت Ù„Ùردي يستخدم Øاليا {size} من مساØØ© القرص.", |
279 | "settings.app.cacheNotCleared": "Couldn't clear all cache", | 282 | "settings.app.cacheNotCleared": "تعذر Ù…Ø³Ø ÙƒÙ„ ذاكرة التخزين المؤقت", |
280 | "settings.app.currentVersion": "الإصدار الØالي:", | 283 | "settings.app.currentVersion": "الإصدار الØالي:", |
281 | "settings.app.form.accentColor": "لون التمييز", | 284 | "settings.app.form.accentColor": "لون التمييز", |
282 | "settings.app.form.adaptableDarkMode": "مزامنة الوضع المظلم مع إعداد الوضع المظلم لنظام التشغيل الخاص بي", | 285 | "settings.app.form.adaptableDarkMode": "مزامنة الوضع المظلم مع إعداد الوضع المظلم لنظام التشغيل الخاص بي", |
@@ -294,235 +297,235 @@ | |||
294 | "settings.app.form.hibernate": "تÙعيل وضع النوم للخدمة", | 297 | "settings.app.form.hibernate": "تÙعيل وضع النوم للخدمة", |
295 | "settings.app.form.hibernateOnStartup": "الإبقاء على الخدمات ÙÙŠ وضع النوم عند بدء التشغيل", | 298 | "settings.app.form.hibernateOnStartup": "الإبقاء على الخدمات ÙÙŠ وضع النوم عند بدء التشغيل", |
296 | "settings.app.form.hibernationStrategy": "استراتيجية وضع النوم", | 299 | "settings.app.form.hibernationStrategy": "استراتيجية وضع النوم", |
297 | "settings.app.form.iconSize": "Service icon size", | 300 | "settings.app.form.iconSize": "Øجم أيقونة الخدمة", |
298 | "settings.app.form.inactivityLock": "Lock after inactivity", | 301 | "settings.app.form.inactivityLock": "الإغلاق عن عدم استخدامك Ù„Ùترة", |
299 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", | 302 | "settings.app.form.keepAllWorkspacesLoaded": "ØاÙظ على جميع مساØات العمل Ù…ÙØملة", |
300 | "settings.app.form.language": "Language", | 303 | "settings.app.form.language": "اللغة", |
301 | "settings.app.form.lockPassword": "كلمة المرور", | 304 | "settings.app.form.lockPassword": "كلمة المرور", |
302 | "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", | 305 | "settings.app.form.minimizeToSystemTray": "تصغير الناÙذة إلى جانب شريط المهام", |
303 | "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", | 306 | "settings.app.form.navigationBarBehaviour": "سلوك شريط التنقل", |
304 | "settings.app.form.predefinedTodoServer": "Todo Server", | 307 | "settings.app.form.predefinedTodoServer": "خادم Todo", |
305 | "settings.app.form.privateNotifications": "Don't show message content in notifications", | 308 | "settings.app.form.privateNotifications": "عدم إظهار Ù…Øتوى الرسالة ÙÙŠ الإشعارات", |
306 | "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", | 309 | "settings.app.form.reloadAfterResume": "إعادة تØميل Ùيردي بعد أعادة تشغيل النظام", |
307 | "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", | 310 | "settings.app.form.runInBackground": "إبقاء Ùردي ÙÙŠ الخلÙية عند إغلاق الناÙذة", |
308 | "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", | 311 | "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", |
309 | "settings.app.form.scheduledDNDEnd": "To", | 312 | "settings.app.form.scheduledDNDEnd": "الى", |
310 | "settings.app.form.scheduledDNDStart": "From", | 313 | "settings.app.form.scheduledDNDStart": "من", |
311 | "settings.app.form.sentry": "Send telemetry data", | 314 | "settings.app.form.sentry": "Send telemetry data", |
312 | "settings.app.form.serviceRibbonWidth": "Sidebar width", | 315 | "settings.app.form.serviceRibbonWidth": "عرض الشريط الجانبي", |
313 | "settings.app.form.showDisabledServices": "Display disabled services tabs", | 316 | "settings.app.form.showDisabledServices": "عرض تبويبات الخدمات المعطلة", |
314 | "settings.app.form.showDragArea": "Show draggable area on window", | 317 | "settings.app.form.showDragArea": "إظهار المنطقة القابلة للسØب على الناÙذة", |
315 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", | 318 | "settings.app.form.showMessagesBadgesWhenMuted": "إظهار شارة رسالة غير مقروءة عند تعطيل الإشعارات", |
316 | "settings.app.form.startMinimized": "Start minimized", | 319 | "settings.app.form.startMinimized": "البدء بناÙذة مصغرة", |
317 | "settings.app.form.universalDarkMode": "Enable universal Dark Mode", | 320 | "settings.app.form.universalDarkMode": "تمكين الوضع المظلم الكامل", |
318 | "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", | 321 | "settings.app.form.useTouchIdToUnlock": "Ø§Ù„Ø³Ù…Ø§Ø Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù… TouchID Ù„ÙØªØ Ùردي", |
319 | "settings.app.headline": "الإعدادات", | 322 | "settings.app.headline": "الإعدادات", |
320 | "settings.app.headlineAdvanced": "Advanced", | 323 | "settings.app.headlineAdvanced": "متقدم", |
321 | "settings.app.headlineAppearance": "Appearance", | 324 | "settings.app.headlineAppearance": "المظهر", |
322 | "settings.app.headlineGeneral": "General", | 325 | "settings.app.headlineGeneral": "عام", |
323 | "settings.app.headlineLanguage": "Language", | 326 | "settings.app.headlineLanguage": "اللغة", |
324 | "settings.app.headlineUpdates": "Updates", | 327 | "settings.app.headlineUpdates": "التØديثات", |
325 | "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", | 328 | "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", |
326 | "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", | 329 | "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", |
327 | "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", | 330 | "settings.app.languageDisclaimer": "الترجمات الرسمية هي الإنكليزية والألمانية. وجميع اللغات الأخرى مبنية على ترجمات مساهمين.", |
328 | "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", | 331 | "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", |
329 | "settings.app.lockedPassword": "كلمة المرور", | 332 | "settings.app.lockedPassword": "كلمة المرور", |
330 | "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | 333 | "settings.app.lockedPasswordInfo": "الرجاء التأكد من تعيين كلمة مرور سو٠تتذكرها.\nإذما Ùقدت كلمة المرور هذه، سو٠تضطر إلى إعادة تثبيت Ùيردي.", |
331 | "settings.app.restartRequired": "Changes require restart", | 334 | "settings.app.restartRequired": "التغيرات تتطلب إعادة تشغيل", |
332 | "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", | 335 | "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", |
333 | "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", | 336 | "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", |
334 | "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data! Changing this option requires you to restart Ferdi.", | 337 | "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data! Changing this option requires you to restart Ferdi.", |
335 | "settings.app.subheadlineCache": "Cache", | 338 | "settings.app.subheadlineCache": "الذاكرة المؤقتة", |
336 | "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", | 339 | "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", |
337 | "settings.app.translationHelp": "Help us to translate Ferdi into your language.", | 340 | "settings.app.translationHelp": "ساعدنا على ترجمة Ùيردي إلى لغتك.", |
338 | "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", | 341 | "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", |
339 | "settings.app.updateStatusAvailable": "Update available, downloading...", | 342 | "settings.app.updateStatusAvailable": "التØديث متوÙر! يتم التØميل...", |
340 | "settings.app.updateStatusSearching": "Is searching for update", | 343 | "settings.app.updateStatusSearching": "يبØØ« عن تØديث", |
341 | "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi", | 344 | "settings.app.updateStatusUpToDate": "أنت تستخدم الإصدار الأخير من Ùيردي", |
342 | "settings.invite.headline": "Invite Friends", | 345 | "settings.invite.headline": "أدع٠الأصدقاء", |
343 | "settings.navigation.account": "الØساب", | 346 | "settings.navigation.account": "الØساب", |
344 | "settings.navigation.availableServices": "Available services", | 347 | "settings.navigation.availableServices": "الخدمات المتاØØ©", |
345 | "settings.navigation.logout": "Logout", | 348 | "settings.navigation.logout": "تسجيل خروج", |
346 | "settings.navigation.settings": "الإعدادات", | 349 | "settings.navigation.settings": "الإعدادات", |
347 | "settings.navigation.supportFerdi": "Support Ferdi", | 350 | "settings.navigation.supportFerdi": "ادعم Ùيردي", |
348 | "settings.navigation.team": "Manage Team", | 351 | "settings.navigation.team": "إدارة الÙريق", |
349 | "settings.navigation.yourServices": "Your services", | 352 | "settings.navigation.yourServices": "خدماتك", |
350 | "settings.navigation.yourWorkspaces": "Your workspaces", | 353 | "settings.navigation.yourWorkspaces": "مساØات عملك", |
351 | "settings.recipes.all": "All services", | 354 | "settings.recipes.all": "جميع الخدمات", |
352 | "settings.recipes.custom": "Custom Services", | 355 | "settings.recipes.custom": "خدماتٌ مخصصة", |
353 | "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", | 356 | "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", |
354 | "settings.recipes.customService.headline.customRecipes": "وصÙات طر٠ثالث مخصصة", | 357 | "settings.recipes.customService.headline.customRecipes": "وصÙات طر٠ثالث مخصصة", |
355 | "settings.recipes.customService.headline.devRecipes": "وصÙات خدمة التطوير الخاصة بك", | 358 | "settings.recipes.customService.headline.devRecipes": "وصÙات خدمة التطوير الخاصة بك", |
356 | "settings.recipes.customService.intro": "لإضاÙØ© خدمة مخصصة، انسخ وصÙØ© الخدمة إلى:", | 359 | "settings.recipes.customService.intro": "لإضاÙØ© خدمة مخصصة، انسخ وصÙØ© الخدمة إلى:", |
357 | "settings.recipes.customService.openDevDocs": "وثائق المطور", | 360 | "settings.recipes.customService.openDevDocs": "وثائق المطور", |
358 | "settings.recipes.customService.openFolder": "ÙØªØ Ø§Ù„Ù…Ø¬Ù„Ø¯", | 361 | "settings.recipes.customService.openFolder": "ÙØªØ Ø§Ù„Ù…Ø¬Ù„Ø¯", |
359 | "settings.recipes.headline": "Available services", | 362 | "settings.recipes.headline": "الخدمات المتاØØ©", |
360 | "settings.recipes.missingService": "خدمة Ù…Ùقودة؟", | 363 | "settings.recipes.missingService": "خدمة Ù…Ùقودة؟", |
361 | "settings.recipes.mostPopular": "الأكثر شعبية", | 364 | "settings.recipes.mostPopular": "الأكثر شعبية", |
362 | "settings.recipes.nothingFound": "عذراً، ولكن لا توجد خدمة تطابق Ù…ØµØ·Ù„Ø Ø§Ù„Ø¨ØØ« الخاص بك.", | 365 | "settings.recipes.nothingFound": "عذراً، ولكن لا توجد خدمة تطابق Ù…ØµØ·Ù„Ø Ø§Ù„Ø¨ØØ« الخاص بك.", |
363 | "settings.recipes.servicesSuccessfulAddedInfo": "تمت إضاÙØ© الخدمة بنجاØ", | 366 | "settings.recipes.servicesSuccessfulAddedInfo": "تمت إضاÙØ© الخدمة بنجاØ", |
364 | "settings.searchService": "البØØ« عن خدمة", | 367 | "settings.searchService": "البØØ« عن خدمة", |
365 | "settings.service.error.goBack": "العودة إلى الخدمات", | 368 | "settings.service.error.goBack": "العودة إلى الخدمات", |
366 | "settings.service.error.headline": "Error", | 369 | "settings.service.error.headline": "خطأ", |
367 | "settings.service.error.message": "تعذر تØميل وصÙØ© الخدمة.", | 370 | "settings.service.error.message": "تعذر تØميل وصÙØ© الخدمة.", |
368 | "settings.service.form.addServiceHeadline": "إضاÙØ© {name}", | 371 | "settings.service.form.addServiceHeadline": "إضاÙØ© {name}", |
369 | "settings.service.form.availableServices": "Available services", | 372 | "settings.service.form.availableServices": "الخدمات المتاØØ©", |
370 | "settings.service.form.customUrl": "خادم مخصص", | 373 | "settings.service.form.customUrl": "خادم مخصص", |
371 | "settings.service.form.customUrlPremiumInfo": "لإضاÙØ© الخدمات المستضاÙØ© بنÙسك، تØتاج إلى Øساب الدعم المدÙوع Ù„Ùردي.", | 374 | "settings.service.form.customUrlPremiumInfo": "لإضاÙØ© الخدمات المستضاÙØ© بنÙسك، تØتاج إلى Øساب الدعم المدÙوع Ù„Ùردي.", |
372 | "settings.service.form.customUrlUpgradeAccount": "ترقية Øسابك", | 375 | "settings.service.form.customUrlUpgradeAccount": "ترقية Øسابك", |
373 | "settings.service.form.customUrlValidationError": "تعذر التØقق من خادم {name} المخصص.", | 376 | "settings.service.form.customUrlValidationError": "تعذر التØقق من خادم {name} المخصص.", |
374 | "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", | 377 | "settings.service.form.darkReaderBrightness": "سطوع الشاشة ÙÙŠ وضع القراءة المظلم", |
375 | "settings.service.form.darkReaderContrast": "Dark Reader Contrast", | 378 | "settings.service.form.darkReaderContrast": "Dark Reader Contrast", |
376 | "settings.service.form.darkReaderSepia": "Dark Reader Sepia", | 379 | "settings.service.form.darkReaderSepia": "Dark Reader Sepia", |
377 | "settings.service.form.deleteButton": "Delete service", | 380 | "settings.service.form.deleteButton": "Øذ٠الخدمة", |
378 | "settings.service.form.disableHibernation": "Disable hibernation", | 381 | "settings.service.form.disableHibernation": "Disable hibernation", |
379 | "settings.service.form.disableHibernationInfo": "You currently have hibernation enabled but you can disable hibernation for individual services using this option.", | 382 | "settings.service.form.disableHibernationInfo": "You currently have hibernation enabled but you can disable hibernation for individual services using this option.", |
380 | "settings.service.form.editServiceHeadline": "Edit {name}", | 383 | "settings.service.form.editServiceHeadline": "تØرير {name}", |
381 | "settings.service.form.enableAudio": "Enable audio", | 384 | "settings.service.form.enableAudio": "تمكين الصوت", |
382 | "settings.service.form.enableBadge": "Show unread message badges", | 385 | "settings.service.form.enableBadge": "إظهار شارات الرسائل غير المقروءة", |
383 | "settings.service.form.enableDarkMode": "Enable Dark Mode", | 386 | "settings.service.form.enableDarkMode": "تمكين الوضع المظلم", |
384 | "settings.service.form.enableNotification": "Enable notifications", | 387 | "settings.service.form.enableNotification": "تÙعيل الإشعارات", |
385 | "settings.service.form.enableService": "Enable service", | 388 | "settings.service.form.enableService": "تÙعيل الخدمة", |
386 | "settings.service.form.headlineBadges": "Unread message badges", | 389 | "settings.service.form.headlineBadges": "شارات الرسائل غير المقروءة", |
387 | "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", | 390 | "settings.service.form.headlineDarkReaderSettings": "إعدادات وضع القارئ المظلم", |
388 | "settings.service.form.headlineGeneral": "General", | 391 | "settings.service.form.headlineGeneral": "عام", |
389 | "settings.service.form.headlineNotifications": "Notifications", | 392 | "settings.service.form.headlineNotifications": "الإشعارات", |
390 | "settings.service.form.icon": "Custom icon", | 393 | "settings.service.form.icon": "أيقونة مخصصة", |
391 | "settings.service.form.iconDelete": "ØØ°Ù", | 394 | "settings.service.form.iconDelete": "ØØ°Ù", |
392 | "settings.service.form.iconUpload": "Drop your image, or click here", | 395 | "settings.service.form.iconUpload": "إسقط صورتك، أو انقر هنا", |
393 | "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | 396 | "settings.service.form.indirectMessageInfo": "سيتم إعلامك عن جميع الرسائل الجديدة ÙÙŠ القناة، وليس Ùقط @username, @channel, @here, ...", |
394 | "settings.service.form.indirectMessages": "Show message badge for all new messages", | 397 | "settings.service.form.indirectMessages": "Show message badge for all new messages", |
395 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", | 398 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", |
396 | "settings.service.form.name": "الاسم", | 399 | "settings.service.form.name": "الاسم", |
397 | "settings.service.form.openDarkmodeCss": "Open darkmode.css", | 400 | "settings.service.form.openDarkmodeCss": "Open darkmode.css", |
398 | "settings.service.form.openUserCss": "Open user.css", | 401 | "settings.service.form.openUserCss": "ÙØªØ user.css", |
399 | "settings.service.form.openUserJs": "Open user.js", | 402 | "settings.service.form.openUserJs": "ÙØªØ user.js", |
400 | "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", | 403 | "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", |
401 | "settings.service.form.proxy.host": "Proxy Host/IP", | 404 | "settings.service.form.proxy.host": "Proxy Host/IP", |
402 | "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.", | 405 | "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.", |
403 | "settings.service.form.proxy.isEnabled": "Use Proxy", | 406 | "settings.service.form.proxy.isEnabled": "استخدام بروكسي", |
404 | "settings.service.form.proxy.password": "Password (optional)", | 407 | "settings.service.form.proxy.password": "كلمة المرور (اختياري)", |
405 | "settings.service.form.proxy.port": "Port", | 408 | "settings.service.form.proxy.port": "المنÙØ°", |
406 | "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.", | 409 | "settings.service.form.proxy.restartInfo": "الرجاء إعادة تشغيل Ùيردي بعد تغيير إعدادات البروكسي.", |
407 | "settings.service.form.proxy.user": "User (optional)", | 410 | "settings.service.form.proxy.user": "المستخدم (اختياري)", |
408 | "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", | 411 | "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", |
409 | "settings.service.form.saveButton": "Save service", | 412 | "settings.service.form.saveButton": "ØÙظ الخدمة", |
410 | "settings.service.form.tabHosted": "Hosted", | 413 | "settings.service.form.tabHosted": "Hosted", |
411 | "settings.service.form.tabOnPremise": "Self hosted âï¸", | 414 | "settings.service.form.tabOnPremise": "استضاÙØ© ذاتية â", |
412 | "settings.service.form.team": "Team", | 415 | "settings.service.form.team": "Ùريق", |
413 | "settings.service.form.useHostedService": "Use the hosted {name} service.", | 416 | "settings.service.form.useHostedService": "Use the hosted {name} service.", |
414 | "settings.service.form.yourServices": "Your services", | 417 | "settings.service.form.yourServices": "خدماتك", |
415 | "settings.services.deletedInfo": "Service has been deleted", | 418 | "settings.services.deletedInfo": "تم Øذ٠الخدمة", |
416 | "settings.services.discoverServices": "Discover services", | 419 | "settings.services.discoverServices": "اكتش٠الخدمات", |
417 | "settings.services.headline": "Your services", | 420 | "settings.services.headline": "خدماتك", |
418 | "settings.services.noServicesAdded": "You haven't added any services yet.", | 421 | "settings.services.noServicesAdded": "لم تقم بإضاÙØ© أي خدمات Øتى الآن.", |
419 | "settings.services.servicesRequestFailed": "Could not load your services", | 422 | "settings.services.servicesRequestFailed": "تعذرَ تØميل خدماتك", |
420 | "settings.services.tooltip.isDisabled": "Service is disabled", | 423 | "settings.services.tooltip.isDisabled": "الخدمة معطّلة", |
421 | "settings.services.tooltip.isMuted": "All sounds are muted", | 424 | "settings.services.tooltip.isMuted": "تم كتم جميع الأصوات", |
422 | "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", | 425 | "settings.services.tooltip.notificationsDisabled": "الإشعارات Ù…Ùعَطَّلة", |
423 | "settings.services.updatedInfo": "تم ØÙظ التغييرات الخاصة بك", | 426 | "settings.services.updatedInfo": "تم ØÙظ التغييرات الخاصة بك", |
424 | "settings.supportFerdi.github": "Star on GitHub", | 427 | "settings.supportFerdi.github": "أبدأ على منصة GitHub", |
425 | "settings.supportFerdi.headline": "Support Ferdi", | 428 | "settings.supportFerdi.headline": "ادعم Ùيردي", |
426 | "settings.supportFerdi.openCollective": "Support our Open Collective", | 429 | "settings.supportFerdi.openCollective": "ادعم مجتمعنا المÙتوØ", |
427 | "settings.supportFerdi.share": "Tell your Friends", | 430 | "settings.supportFerdi.share": "أخبر أصدقائك", |
428 | "settings.supportFerdi.title": "Do you like Ferdi? Spread the love!", | 431 | "settings.supportFerdi.title": "هل تØب Ùيردي؟ انشر الØب!", |
429 | "settings.team.contentHeadline": "Franz Team Management", | 432 | "settings.team.contentHeadline": "Ùريق أدارة Ùرانز", |
430 | "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", | 433 | "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", |
431 | "settings.team.headline": "Team", | 434 | "settings.team.headline": "Ùريق", |
432 | "settings.team.intro": "Your are currently using Franz Servers, which is why you have access to Team Management.", | 435 | "settings.team.intro": "Your are currently using Franz Servers, which is why you have access to Team Management.", |
433 | "settings.team.manageAction": "Manage your Team on meetfranz.com", | 436 | "settings.team.manageAction": "ادر Ùريقك على meetfranz.com", |
434 | "settings.team.teamsUnavailable": "Teams are unavailable", | 437 | "settings.team.teamsUnavailable": "الÙرق غير متوÙرة", |
435 | "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", | 438 | "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", |
436 | "settings.team.upgradeAction": "Upgrade your Account", | 439 | "settings.team.upgradeAction": "ترقية Øسابك", |
437 | "settings.user.form.accountType.company": "Company", | 440 | "settings.user.form.accountType.company": "اسم الشركة", |
438 | "settings.user.form.accountType.individual": "Individual", | 441 | "settings.user.form.accountType.individual": "شخصي", |
439 | "settings.user.form.accountType.label": "Account type", | 442 | "settings.user.form.accountType.label": "نوع الØساب", |
440 | "settings.user.form.accountType.non-profit": "Non-Profit", | 443 | "settings.user.form.accountType.non-profit": "غير ربØÙŠ", |
441 | "settings.user.form.currentPassword": "Current password", | 444 | "settings.user.form.currentPassword": "الكلمة السرية الØالية", |
442 | "settings.user.form.email": "Email", | 445 | "settings.user.form.email": "البريد الألكتروني", |
443 | "settings.user.form.firstname": "First Name", | 446 | "settings.user.form.firstname": "الاسم الأول", |
444 | "settings.user.form.lastname": "Last Name", | 447 | "settings.user.form.lastname": "اسم العائلة", |
445 | "settings.user.form.newPassword": "New password", | 448 | "settings.user.form.newPassword": "كلمة سرّ جديدة", |
446 | "settings.workspace.add.form.name": "الاسم", | 449 | "settings.workspace.add.form.name": "الاسم", |
447 | "settings.workspace.add.form.submitButton": "Create workspace", | 450 | "settings.workspace.add.form.submitButton": "إنشاء مساØØ© عمل", |
448 | "settings.workspace.form.buttonDelete": "Delete workspace", | 451 | "settings.workspace.form.buttonDelete": "Øذ٠مساØØ© العمل", |
449 | "settings.workspace.form.buttonSave": "Save workspace", | 452 | "settings.workspace.form.buttonSave": "ØÙظ مساØØ© العمل", |
450 | "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", | 453 | "settings.workspace.form.keepLoaded": "ØاÙظ على مساØØ© العمل هذه Ù…ÙØملة*", |
451 | "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", | 454 | "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", |
452 | "settings.workspace.form.name": "الاسم", | 455 | "settings.workspace.form.name": "الاسم", |
453 | "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", | 456 | "settings.workspace.form.servicesInWorkspaceHeadline": "الخدمات ÙÙŠ مساØØ© العمل هذه", |
454 | "settings.workspace.form.yourWorkspaces": "Your workspaces", | 457 | "settings.workspace.form.yourWorkspaces": "مساØات عملك", |
455 | "settings.workspaces.deletedInfo": "Workspace has been deleted", | 458 | "settings.workspaces.deletedInfo": "تم Øذ٠مساØØ© العمل", |
456 | "settings.workspaces.headline": "Your workspaces", | 459 | "settings.workspaces.headline": "مساØات عملك", |
457 | "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", | 460 | "settings.workspaces.noWorkspacesAdded": "لم تقم بإضاÙØ© أي مساØات عمل Øتى الآن.", |
458 | "settings.workspaces.tryReloadWorkspaces": "Øاول مجددًا", | 461 | "settings.workspaces.tryReloadWorkspaces": "Øاول مجددًا", |
459 | "settings.workspaces.updatedInfo": "تم ØÙظ التغييرات الخاصة بك", | 462 | "settings.workspaces.updatedInfo": "تم ØÙظ التغييرات الخاصة بك", |
460 | "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", | 463 | "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", |
461 | "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 464 | "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
462 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", | 465 | "settings.workspaces.workspacesRequestFailed": "تعذر تØميل مساØات عملك", |
463 | "sidebar.addNewService": "Add new service", | 466 | "sidebar.addNewService": "إضاÙØ© خدمة جديدة", |
464 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | 467 | "sidebar.closeTodosDrawer": "أغلق Todos Ùيردي", |
465 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", | 468 | "sidebar.closeWorkspaceDrawer": "غلق٠دÙرج٠مساØØ© العمل", |
466 | "sidebar.lockFerdi": "Ù‚ÙÙ„ Ùردي", | 469 | "sidebar.lockFerdi": "Ù‚ÙÙ„ Ùردي", |
467 | "sidebar.muteApp": "Disable notifications & audio", | 470 | "sidebar.muteApp": "تعطيل الإشعارات والصوت", |
468 | "sidebar.openTodosDrawer": "Open Ferdi Todos", | 471 | "sidebar.openTodosDrawer": "ÙØªØ Todos Ùيردي", |
469 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", | 472 | "sidebar.openWorkspaceDrawer": "ÙتØ٠دÙرج٠مساØØ© العمل", |
470 | "sidebar.settings": "الإعدادات", | 473 | "sidebar.settings": "الإعدادات", |
471 | "sidebar.unmuteApp": "Enable notifications & audio", | 474 | "sidebar.unmuteApp": "تمكين الإشعارات والصوت", |
472 | "signup.email.label": "البريد الإلكتروني", | 475 | "signup.email.label": "البريد الإلكتروني", |
473 | "signup.emailDuplicate": "A user with that email address already exists", | 476 | "signup.emailDuplicate": "مستخدم بهذا البريد الإلكتروني موجود بالÙعل", |
474 | "signup.firstname.label": "First Name", | 477 | "signup.firstname.label": "الاسم الأول", |
475 | "signup.headline": "Sign up", | 478 | "signup.headline": "التسجيل", |
476 | "signup.lastname.label": "Last Name", | 479 | "signup.lastname.label": "اسم العائلة", |
477 | "signup.legal.info": "By creating a Ferdi account you accept the", | 480 | "signup.legal.info": "من خلال إنشاء Øساب Ùيردي Ùإنك تقبل", |
478 | "signup.legal.privacy": "بيان الخصوصية", | 481 | "signup.legal.privacy": "بيان الخصوصية", |
479 | "signup.legal.terms": "Terms of service", | 482 | "signup.legal.terms": "بنود الخدمة", |
480 | "signup.link.login": "Already have an account, sign in?", | 483 | "signup.link.login": "ألديك Øساب, سجل الدخول؟", |
481 | "signup.password.label": "كلمة المرور", | 484 | "signup.password.label": "كلمة المرور", |
482 | "signup.submit.label": "Create account", | 485 | "signup.submit.label": "أنشئ Øساب", |
483 | "subscription.bestValue": "Best value", | 486 | "subscription.bestValue": "Best value", |
484 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", | 487 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", |
485 | "subscription.cta.allOptions": "See all options", | 488 | "subscription.cta.allOptions": "مشاهدة جميع الخيارات", |
486 | "subscription.cta.choosePlan": "Choose your plan", | 489 | "subscription.cta.choosePlan": "اختر خطة اشتراكك", |
487 | "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", | 490 | "subscription.includedProFeatures": "وتشمل خطة اشتراك Ùيردي الاØتراÙية ما يلي:", |
488 | "subscription.interval.per": "per {interval}", | 491 | "subscription.interval.per": "لكل {interval}", |
489 | "subscription.interval.perMonth": "per month", | 492 | "subscription.interval.perMonth": "ÙÙŠ الشهر", |
490 | "subscription.interval.perMonthPerUser": "per month & user", | 493 | "subscription.interval.perMonthPerUser": "ÙÙŠ الشهر وعدد المستخدمين", |
491 | "subscription.planItem.upgradeAccount": "ترقية الØساب", | 494 | "subscription.planItem.upgradeAccount": "ترقية الØساب", |
492 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", | 495 | "subscription.teaser.includedFeatures": "تشمل خطة الاشتراك المدÙوعة Ù„Ùريدي:", |
493 | "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | 496 | "subscription.teaser.intro": "يأتي Ùردي 5 مع مجموعة واسعة من الميزات الجديدة لتعزيز تواصلك اليومي - ويشمل ذلك البطاريات. تØقق من خطط اشتراكاتنا الجديدة واكتش٠أي واØد تناسبك أكثر!", |
494 | "subscriptionPopup.buttonCancel": "Cancel", | 497 | "subscriptionPopup.buttonCancel": "إلغاء", |
495 | "subscriptionPopup.buttonDone": "Done", | 498 | "subscriptionPopup.buttonDone": "تم", |
496 | "tabs.item.deleteService": "Delete service", | 499 | "tabs.item.deleteService": "Øذ٠الخدمة", |
497 | "tabs.item.disableAudio": "Disable audio", | 500 | "tabs.item.disableAudio": "تعطيل الصوت", |
498 | "tabs.item.disableNotifications": "Disable notifications", | 501 | "tabs.item.disableNotifications": "تعطيل الإشعارات", |
499 | "tabs.item.disableService": "Disable service", | 502 | "tabs.item.disableService": "تعطيل الخدمة", |
500 | "tabs.item.edit": "تعديل", | 503 | "tabs.item.edit": "تعديل", |
501 | "tabs.item.enableAudio": "Enable audio", | 504 | "tabs.item.enableAudio": "تمكين الصوت", |
502 | "tabs.item.enableNotification": "Enable notifications", | 505 | "tabs.item.enableNotification": "تÙعيل الإشعارات", |
503 | "tabs.item.enableService": "Enable service", | 506 | "tabs.item.enableService": "تÙعيل الخدمة", |
504 | "tabs.item.reload": "إعادة التØميل", | 507 | "tabs.item.reload": "إعادة التØميل", |
505 | "validation.email": "{field} is not valid", | 508 | "validation.email": "{field} غير صالØ", |
506 | "validation.minLength": "{field} should be at least {length} characters long", | 509 | "validation.minLength": "{field} يجب أن يكون على الأقل {length} ØرÙاً", |
507 | "validation.oneRequired": "At least one is required", | 510 | "validation.oneRequired": "At least one is required", |
508 | "validation.required": "{field} is required", | 511 | "validation.required": "{field} مطلوب", |
509 | "validation.url": "{field} is not a valid URL", | 512 | "validation.url": "{field} ليس عنوان URL صالØ", |
510 | "webControls.back": "الرجوع", | 513 | "webControls.back": "الرجوع", |
511 | "webControls.forward": "تقدم", | 514 | "webControls.forward": "تقدم", |
512 | "webControls.goHome": "الرئيسية", | 515 | "webControls.goHome": "الرئيسية", |
513 | "webControls.openInBrowser": "Open in Browser", | 516 | "webControls.openInBrowser": "ÙØªØ ÙÙŠ المتصÙØ", |
514 | "webControls.reload": "إعادة التØميل", | 517 | "webControls.reload": "إعادة التØميل", |
515 | "welcome.loginButton": "Login to your account", | 518 | "welcome.loginButton": "تسجيل الدخول إلى Øسابك", |
516 | "welcome.signupButton": "إنشاء Øساب مجاني", | 519 | "welcome.signupButton": "إنشاء Øساب مجاني", |
517 | "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", | 520 | "workspaceDrawer.addNewWorkspaceLabel": "إضاÙØ© مساØØ© عمل جديدة", |
518 | "workspaceDrawer.allServices": "All services", | 521 | "workspaceDrawer.allServices": "جميع الخدمات", |
519 | "workspaceDrawer.headline": "Workspaces", | 522 | "workspaceDrawer.headline": "مساØات٠العمل", |
520 | "workspaceDrawer.item.contextMenuEdit": "edit", | 523 | "workspaceDrawer.item.contextMenuEdit": "تعديل", |
521 | "workspaceDrawer.item.noServicesAddedYet": "No services added yet", | 524 | "workspaceDrawer.item.noServicesAddedYet": "لم تض٠أي خدمات بعد", |
522 | "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", | 525 | "workspaceDrawer.premiumCtaButtonLabel": "أنشئ مساØØ© عملك الأولى", |
523 | "workspaceDrawer.proFeatureBadge": "Premium feature", | 526 | "workspaceDrawer.proFeatureBadge": "المزايا المدÙوعة", |
524 | "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", | 527 | "workspaceDrawer.reactivatePremiumAccountLabel": "إعادة تنشيط الØساب المدÙوع", |
525 | "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", | 528 | "workspaceDrawer.workspaceFeatureInfo": "<p>ÙŠÙمكنك Ùيردي من التركيز على ما هو مهم لديك الآن. أنشاء مجموعات مختلÙØ© من الخدمات وإداراتها والتنقل بينها بسهولة ÙÙŠ أي وقت.<p><p/>أنتَ من يقرر أيّ الخدمات تØتاج ساعة تØتاج وأين تØتاج, لذا نستطيع مساعدتك لتبقى Ù…ØاÙظ مع مستجدات ما تقوم به أو ØªØ³ØªØ±ÙŠØ Ø¥Ù† شئت.<p/>", |
526 | "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", | 529 | "workspaceDrawer.workspacesSettingsTooltip": "تعديل إعدادات مساØات العمل", |
527 | "workspaces.switchingIndicator.switchingTo": "Switching to" | 530 | "workspaces.switchingIndicator.switchingTo": "التبديل إلى" |
528 | } | 531 | } |
diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/bs.json +++ b/src/i18n/locales/bs.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index b0e8d2ded..bfb6391f1 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -1,14 +1,17 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Recarrega", | 2 | "app.errorHandler.action": "Recarrega", |
3 | "app.errorHandler.headline": "Quelcom ha anat malament", | 3 | "app.errorHandler.headline": "Quelcom ha anat malament", |
4 | "changeserver.headline": "Change server", | 4 | "changeserver.customServerLabel": "Servidor personalitzat", |
5 | "changeserver.label": "Server", | 5 | "changeserver.headline": "CanvÃa de Servidor", |
6 | "changeserver.label": "Servidor", | ||
6 | "changeserver.submit": "Enviar", | 7 | "changeserver.submit": "Enviar", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Torna a carregar el servei", | 10 | "connectionLostBanner.cta": "Torna a carregar el servei", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "Què ha passat?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi ha perdut la connexió a {name}.", |
10 | "feature.announcements.changelog.headline": "Canvis en Ferdi {version}", | 13 | "feature.announcements.changelog.headline": "Canvis en Ferdi {version}", |
11 | "feature.debugger.title": "Publish debugging information", | 14 | "feature.debugger.title": "Registra la informació de depuració", |
12 | "feature.delayApp.headline": "Si us plau, compra una llicència de suport per a Ferdi per saltar l'espera", | 15 | "feature.delayApp.headline": "Si us plau, compra una llicència de suport per a Ferdi per saltar l'espera", |
13 | "feature.delayApp.text": "Ferdi continuarà en {seconds} segons", | 16 | "feature.delayApp.text": "Ferdi continuarà en {seconds} segons", |
14 | "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", | 17 | "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", |
@@ -32,17 +35,17 @@ | |||
32 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 35 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", |
33 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | 36 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", |
34 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 37 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", |
35 | "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", | 38 | "feature.publishDebugInfo.error": "S'ha produït un error en intentar publicar la informació de depuració. Torneu-ho a provar més tard o visualitzeu la consola per obtenir més informació.", |
36 | "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", | 39 | "feature.publishDebugInfo.info": "La publicació de la informació de depuració ens ajuda a trobar problemes i errors a Ferdi. En publicar la informació de depuració, accepteu la polÃtica de privadesa i els termes del servei de Ferdi Debugger", |
37 | "feature.publishDebugInfo.privacy": "Privacy policy", | 40 | "feature.publishDebugInfo.privacy": "PolÃtica de privacitat", |
38 | "feature.publishDebugInfo.publish": "Accept and publish", | 41 | "feature.publishDebugInfo.publish": "Accepta i publica", |
39 | "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", | 42 | "feature.publishDebugInfo.published": "El vostre registre de depuració es va publicar i ja es pot consultar a", |
40 | "feature.publishDebugInfo.terms": "Termes del Servei", | 43 | "feature.publishDebugInfo.terms": "Termes del Servei", |
41 | "feature.publishDebugInfo.title": "Publish debug information", | 44 | "feature.publishDebugInfo.title": "Publicar informació de depuració", |
42 | "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", | 45 | "feature.quickSwitch.info": "Seleccioneu un servei amb TAB, ↑ i ↓. Obriu un servei amb ENTER.", |
43 | "feature.quickSwitch.search": "Search...", | 46 | "feature.quickSwitch.search": "Cerca...", |
44 | "feature.quickSwitch.title": "QuickSwitch", | 47 | "feature.quickSwitch.title": "QuickSwitch", |
45 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | 48 | "feature.serviceLimit.limitReached": "Heu afegit {amount} de {limit} serveis inclosos al vostre pla. Actualitzeu el vostre compte per afegir més serveis.", |
46 | "feature.shareFranz.action.email": "Envia com a correu", | 49 | "feature.shareFranz.action.email": "Envia com a correu", |
47 | "feature.shareFranz.action.facebook": "Compartir en Facebook", | 50 | "feature.shareFranz.action.facebook": "Compartir en Facebook", |
48 | "feature.shareFranz.action.twitter": "Compartir a Twitter", | 51 | "feature.shareFranz.action.twitter": "Compartir a Twitter", |
@@ -50,9 +53,9 @@ | |||
50 | "feature.shareFranz.shareText.email": "He afegit {count} serveis a Ferdi! Obtén l'aplicació gratuïta per a Whatsapp, Messenger, Slack, Skype a www,getferdi.com", | 53 | "feature.shareFranz.shareText.email": "He afegit {count} serveis a Ferdi! Obtén l'aplicació gratuïta per a Whatsapp, Messenger, Slack, Skype a www,getferdi.com", |
51 | "feature.shareFranz.shareText.twitter": "He afegit {count} serveis a Ferdi! Obtén l'aplicació gratuïta de Whatsapp, Messenger, Slack, Skype i altres a www.getferdi.com/cc @FerdiMessenger", | 54 | "feature.shareFranz.shareText.twitter": "He afegit {count} serveis a Ferdi! Obtén l'aplicació gratuïta de Whatsapp, Messenger, Slack, Skype i altres a www.getferdi.com/cc @FerdiMessenger", |
52 | "feature.shareFranz.text": "Digues als teus amics i col·legues l'increïble que és Ferdi i ajuda'ns a còrrer la veu ", | 55 | "feature.shareFranz.text": "Digues als teus amics i col·legues l'increïble que és Ferdi i ajuda'ns a còrrer la veu ", |
53 | "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", | 56 | "feature.todos.premium.info": "Les Tasques de Ferdi ja estan disponibles per a usuaris premium!", |
54 | "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", | 57 | "feature.todos.premium.rollout": "Tothom haurà d'esperar una mica més.", |
55 | "feature.todos.premium.upgrade": "Upgrade Account", | 58 | "feature.todos.premium.upgrade": "Actualitzar el compte", |
56 | "feature.trialStatusBar.cta": "Upgrade now", | 59 | "feature.trialStatusBar.cta": "Upgrade now", |
57 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", | 60 | "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", |
58 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", | 61 | "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", |
@@ -61,18 +64,18 @@ | |||
61 | "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", | 64 | "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", |
62 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", | 65 | "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", |
63 | "global.api.unhealthy": "No es pot connectar amb els serveis en lÃnia de Ferdi", | 66 | "global.api.unhealthy": "No es pot connectar amb els serveis en lÃnia de Ferdi", |
64 | "global.franzProRequired": "Ferdi Professional Required", | 67 | "global.franzProRequired": "Professional de Ferdi obligatori", |
65 | "global.notConnectedToTheInternet": "No esteu connectat a Internet.", | 68 | "global.notConnectedToTheInternet": "No esteu connectat a Internet.", |
66 | "global.spellchecker.useDefault": "Utilitzar el predeterminat del sistema ({default})", | 69 | "global.spellchecker.useDefault": "Utilitzar el predeterminat del sistema ({default})", |
67 | "global.spellchecking.autodetect": "Detectar l'idioma automà ticament", | 70 | "global.spellchecking.autodetect": "Detectar l'idioma automà ticament", |
68 | "global.spellchecking.autodetect.short": "Automà tic", | 71 | "global.spellchecking.autodetect.short": "Automà tic", |
69 | "global.spellchecking.language": "Corrector ortogrà fic", | 72 | "global.spellchecking.language": "Corrector ortogrà fic", |
70 | "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional", | 73 | "global.upgradeButton.upgradeToPro": "Actualitza a Ferdi Professional", |
71 | "import.headline": "Importa els teus serveis Ferdi 4", | 74 | "import.headline": "Importa els teus serveis Ferdi 4", |
72 | "import.notSupportedHeadline": "Serveis que encara no s'admeten a Ferdi 5", | 75 | "import.notSupportedHeadline": "Serveis que encara no s'admeten a Ferdi 5", |
73 | "import.skip.label": "Vull afegir serveis manualment", | 76 | "import.skip.label": "Vull afegir serveis manualment", |
74 | "import.submit.label": "Importa serveis", | 77 | "import.submit.label": "Importa serveis", |
75 | "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", | 78 | "infobar.authRequestFailed": "S'han produït errors al intentar realitzar una sol·licitud autentificada. Proveu de tancar la sessió i tornar-hi si aquest error continua.", |
76 | "infobar.buttonChangelog": "Que hi ha de nou?", | 79 | "infobar.buttonChangelog": "Que hi ha de nou?", |
77 | "infobar.buttonInstallUpdate": "Reinicia i instal·la l'actualització", | 80 | "infobar.buttonInstallUpdate": "Reinicia i instal·la l'actualització", |
78 | "infobar.buttonReloadServices": "Recarrega els serveis", | 81 | "infobar.buttonReloadServices": "Recarrega els serveis", |
@@ -86,15 +89,15 @@ | |||
86 | "invite.skip.label": "Ho vull fer més tard", | 89 | "invite.skip.label": "Ho vull fer més tard", |
87 | "invite.submit.label": "Enviar invitacions", | 90 | "invite.submit.label": "Enviar invitacions", |
88 | "invite.successInfo": "Invitacions enviades correctament", | 91 | "invite.successInfo": "Invitacions enviades correctament", |
89 | "locked.headline": "Locked", | 92 | "locked.headline": "Bloquejat", |
90 | "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | 93 | "locked.info": "Actualment, Ferdi està bloquejat. Desbloqueu Ferdi amb la vostra contrasenya per veure els vostres missatges.", |
91 | "locked.invalidCredentials": "Password invalid", | 94 | "locked.invalidCredentials": "Contrasenya incorrecte", |
92 | "locked.password.label": "Password", | 95 | "locked.password.label": "Contrasenya", |
93 | "locked.submit.label": "Unlock", | 96 | "locked.submit.label": "Desbloqueja", |
94 | "locked.touchId": "Unlock with Touch ID", | 97 | "locked.touchId": "Desbloqueja amb Touch ID", |
95 | "locked.touchIdPrompt": "unlock via Touch ID", | 98 | "locked.touchIdPrompt": "desbloqueja amb Touch ID", |
96 | "locked.unlockWithPassword": "Unlock with Password", | 99 | "locked.unlockWithPassword": "Desbloqueja amb contrasenya", |
97 | "login.changeServer": "Change server", | 100 | "login.changeServer": "CanvÃa de Servidor", |
98 | "login.customServerQuestion": "Using a custom Ferdi server?", | 101 | "login.customServerQuestion": "Using a custom Ferdi server?", |
99 | "login.customServerSuggestion": "Try importing your Franz account", | 102 | "login.customServerSuggestion": "Try importing your Franz account", |
100 | "login.email.label": "Correu electrònic", | 103 | "login.email.label": "Correu electrònic", |
@@ -102,15 +105,15 @@ | |||
102 | "login.invalidCredentials": "El correu electrònic o la contrasenya no són và lids", | 105 | "login.invalidCredentials": "El correu electrònic o la contrasenya no són và lids", |
103 | "login.link.password": "Restablir la contrasenya", | 106 | "login.link.password": "Restablir la contrasenya", |
104 | "login.link.signup": "Crea un compte gratuït", | 107 | "login.link.signup": "Crea un compte gratuït", |
105 | "login.password.label": "Password", | 108 | "login.password.label": "Contrasenya", |
106 | "login.serverLogout": "La teva sessió ha caducat, torna-la a iniciar.", | 109 | "login.serverLogout": "La teva sessió ha caducat, torna-la a iniciar.", |
107 | "login.submit.label": "Accedir-hi", | 110 | "login.submit.label": "Accedir-hi", |
108 | "login.tokenExpired": "La teva sessió ha caducat, torna-la a iniciar.", | 111 | "login.tokenExpired": "La teva sessió ha caducat, torna-la a iniciar.", |
109 | "menu.Todoss.closeTodosDrawer": "Close Todos drawer", | 112 | "menu.Todoss.closeTodosDrawer": "Tanca el calaix de tasques", |
110 | "menu.Todoss.openTodosDrawer": "Open Todos drawer", | 113 | "menu.Todoss.openTodosDrawer": "Obre el calaix de tasques", |
111 | "menu.app.about": "Sobre Ferdi", | 114 | "menu.app.about": "Sobre Ferdi", |
112 | "menu.app.announcement": "Què hi ha de nou?", | 115 | "menu.app.announcement": "Què hi ha de nou?", |
113 | "menu.app.autohideMenuBar": "Auto-hide menu bar", | 116 | "menu.app.autohideMenuBar": "Amaga automà ticament la barra de menú", |
114 | "menu.app.checkForUpdates": "Comprova si hi ha actualitzacions", | 117 | "menu.app.checkForUpdates": "Comprova si hi ha actualitzacions", |
115 | "menu.app.hide": "Amaga", | 118 | "menu.app.hide": "Amaga", |
116 | "menu.app.hideOthers": "Amaga altres", | 119 | "menu.app.hideOthers": "Amaga altres", |
@@ -122,7 +125,7 @@ | |||
122 | "menu.edit.cut": "Retalla", | 125 | "menu.edit.cut": "Retalla", |
123 | "menu.edit.delete": "Suprimeix", | 126 | "menu.edit.delete": "Suprimeix", |
124 | "menu.edit.emojiSymbols": "Emoji i SÃmbols", | 127 | "menu.edit.emojiSymbols": "Emoji i SÃmbols", |
125 | "menu.edit.findInPage": "Find in Page", | 128 | "menu.edit.findInPage": "Troba a la pà gina", |
126 | "menu.edit.paste": "Enganxa", | 129 | "menu.edit.paste": "Enganxa", |
127 | "menu.edit.pasteAndMatchStyle": "Enganxa amb els estils", | 130 | "menu.edit.pasteAndMatchStyle": "Enganxa amb els estils", |
128 | "menu.edit.redo": "Refés", | 131 | "menu.edit.redo": "Refés", |
@@ -135,46 +138,46 @@ | |||
135 | "menu.file": "Fitxer", | 138 | "menu.file": "Fitxer", |
136 | "menu.help": "Ajuda", | 139 | "menu.help": "Ajuda", |
137 | "menu.help.changelog": "Registre de canvis", | 140 | "menu.help.changelog": "Registre de canvis", |
138 | "menu.help.debugInfo": "Copy Debug Information", | 141 | "menu.help.debugInfo": "Copia la informació de depuració", |
139 | "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", | 142 | "menu.help.debugInfoCopiedBody": "La informació de depuració s'ha copiat al porta-retalls.", |
140 | "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", | 143 | "menu.help.debugInfoCopiedHeadline": "Informació de depuració de Ferdi", |
141 | "menu.help.learnMore": "Conegueu-ne més detalls", | 144 | "menu.help.learnMore": "Conegueu-ne més detalls", |
142 | "menu.help.privacy": "Declaració de privacitat", | 145 | "menu.help.privacy": "Declaració de privacitat", |
143 | "menu.help.publishDebugInfo": "Publish Debug Information", | 146 | "menu.help.publishDebugInfo": "Publicar informació de depuració", |
144 | "menu.help.support": "Suport", | 147 | "menu.help.support": "Suport", |
145 | "menu.help.tos": "Condicions del Servei", | 148 | "menu.help.tos": "Condicions del Servei", |
146 | "menu.services": "Serveis", | 149 | "menu.services": "Serveis", |
147 | "menu.services.activatePreviousService": "Activate previous service", | 150 | "menu.services.activatePreviousService": "Activa el servei anterior", |
148 | "menu.services.addNewService": "Afegeix un servei...", | 151 | "menu.services.addNewService": "Afegeix un servei...", |
149 | "menu.services.goHome": "Home", | 152 | "menu.services.goHome": "Inici", |
150 | "menu.services.setNextServiceActive": "Activate next service", | 153 | "menu.services.setNextServiceActive": "Activa el següent servei", |
151 | "menu.todos": "Todos", | 154 | "menu.todos": "Tasques", |
152 | "menu.todos.enableTodos": "Enable Todos", | 155 | "menu.todos.enableTodos": "Activar Tasques", |
153 | "menu.view": "Visualitza", | 156 | "menu.view": "Visualitza", |
154 | "menu.view.back": "Back", | 157 | "menu.view.back": "Enrere", |
155 | "menu.view.enterFullScreen": "Inicia la pantalla completa", | 158 | "menu.view.enterFullScreen": "Inicia la pantalla completa", |
156 | "menu.view.exitFullScreen": "Surt de pantalla completa", | 159 | "menu.view.exitFullScreen": "Surt de pantalla completa", |
157 | "menu.view.forward": "Forward", | 160 | "menu.view.forward": "Endavant", |
158 | "menu.view.lockFerdi": "Lock Ferdi", | 161 | "menu.view.lockFerdi": "Bloqueja Ferdi", |
159 | "menu.view.openQuickSwitch": "Open Quick Switch", | 162 | "menu.view.openQuickSwitch": "Obre Quick Switch", |
160 | "menu.view.reloadFranz": "Torna a carregar Ferdi", | 163 | "menu.view.reloadFranz": "Torna a carregar Ferdi", |
161 | "menu.view.reloadService": "Torna a carregar el servei", | 164 | "menu.view.reloadService": "Torna a carregar el servei", |
162 | "menu.view.resetZoom": "Mida real", | 165 | "menu.view.resetZoom": "Mida real", |
163 | "menu.view.toggleDarkMode": "Toggle Dark Mode", | 166 | "menu.view.toggleDarkMode": "Canvia a Mode Fosc", |
164 | "menu.view.toggleDevTools": "Activa serveis per a desenvolupadors", | 167 | "menu.view.toggleDevTools": "Activa serveis per a desenvolupadors", |
165 | "menu.view.toggleFullScreen": "Activa la pantalla completa", | 168 | "menu.view.toggleFullScreen": "Activa la pantalla completa", |
166 | "menu.view.toggleServiceDevTools": "Habilita les eines de desenvolupador de serveis", | 169 | "menu.view.toggleServiceDevTools": "Habilita les eines de desenvolupador de serveis", |
167 | "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", | 170 | "menu.view.toggleTodosDevTools": "Activa serveis per a desenvolupadors a Tasques", |
168 | "menu.view.zoomIn": "Amplia", | 171 | "menu.view.zoomIn": "Amplia", |
169 | "menu.view.zoomOut": "Redueix", | 172 | "menu.view.zoomOut": "Redueix", |
170 | "menu.window": "Finestra", | 173 | "menu.window": "Finestra", |
171 | "menu.window.close": "Tanca", | 174 | "menu.window.close": "Tanca", |
172 | "menu.window.minimize": "Minimitza", | 175 | "menu.window.minimize": "Minimitza", |
173 | "menu.workspaces": "Workspaces", | 176 | "menu.workspaces": "Espais de treball", |
174 | "menu.workspaces.addNewWorkspace": "Add New Workspace...", | 177 | "menu.workspaces.addNewWorkspace": "Afegir un Espai de Treball...", |
175 | "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", | 178 | "menu.workspaces.closeWorkspaceDrawer": "Tancar el calaix d'espais de treball", |
176 | "menu.workspaces.defaultWorkspace": "Tots els serveis", | 179 | "menu.workspaces.defaultWorkspace": "Tots els serveis", |
177 | "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", | 180 | "menu.workspaces.openWorkspaceDrawer": "Obrir el calaix d'espais de treball", |
178 | "password.email.label": "Correu electrònic", | 181 | "password.email.label": "Correu electrònic", |
179 | "password.headline": "Restablir la contrasenya", | 182 | "password.headline": "Restablir la contrasenya", |
180 | "password.link.login": "Inicia la sessió al teu compte", | 183 | "password.link.login": "Inicia la sessió al teu compte", |
@@ -183,12 +186,12 @@ | |||
183 | "password.submit.label": "Enviar", | 186 | "password.submit.label": "Enviar", |
184 | "password.successInfo": "Comproveu el vostre correu electrònic", | 187 | "password.successInfo": "Comproveu el vostre correu electrònic", |
185 | "premiumFeature.button.upgradeAccount": "Millorar el teu compte", | 188 | "premiumFeature.button.upgradeAccount": "Millorar el teu compte", |
186 | "pricing.features.accountSync": "Account Synchronisation", | 189 | "pricing.features.accountSync": "Sincronització de Conte", |
187 | "pricing.features.adFree": "Forever ad-free", | 190 | "pricing.features.adFree": "Sense publicitat per sempre", |
188 | "pricing.features.appDelays": "No Waiting Screens", | 191 | "pricing.features.appDelays": "Cap pantalla d’espera", |
189 | "pricing.features.appDelaysEnabled": "Occasional Waiting Screens", | 192 | "pricing.features.appDelaysEnabled": "Pantalles d’espera ocasionals", |
190 | "pricing.features.customWebsites": "Add Custom Websites", | 193 | "pricing.features.customWebsites": "Afegir llocs web personalitzats", |
191 | "pricing.features.desktopNotifications": "Desktop Notifications", | 194 | "pricing.features.desktopNotifications": "Notificacions a l'escriptori", |
192 | "pricing.features.onPremise": "On-premise & other Hosted Services", | 195 | "pricing.features.onPremise": "On-premise & other Hosted Services", |
193 | "pricing.features.recipes": "Choose from more than 70 Services", | 196 | "pricing.features.recipes": "Choose from more than 70 Services", |
194 | "pricing.features.serviceProxies": "Service Proxies", | 197 | "pricing.features.serviceProxies": "Service Proxies", |
@@ -198,7 +201,7 @@ | |||
198 | "pricing.features.unlimitedServices": "Add unlimited services", | 201 | "pricing.features.unlimitedServices": "Add unlimited services", |
199 | "pricing.features.upToSixServices": "Add up to 6 services", | 202 | "pricing.features.upToSixServices": "Add up to 6 services", |
200 | "pricing.features.upToThreeServices": "Add up to 3 services", | 203 | "pricing.features.upToThreeServices": "Add up to 3 services", |
201 | "pricing.features.workspaces": "Workspaces", | 204 | "pricing.features.workspaces": "Espais de treball", |
202 | "pricing.plan.free": "Ferdi Free", | 205 | "pricing.plan.free": "Ferdi Free", |
203 | "pricing.plan.legacy": "Ferdi Premium", | 206 | "pricing.plan.legacy": "Ferdi Premium", |
204 | "pricing.plan.personal": "Ferdi Personal", | 207 | "pricing.plan.personal": "Ferdi Personal", |
@@ -231,7 +234,7 @@ | |||
231 | "service.errorHandler.headline": "Oh no!", | 234 | "service.errorHandler.headline": "Oh no!", |
232 | "service.errorHandler.message": "Error", | 235 | "service.errorHandler.message": "Error", |
233 | "service.errorHandler.text": "{name} ha fallat al carregar", | 236 | "service.errorHandler.text": "{name} ha fallat al carregar", |
234 | "service.restrictedHandler.action": "Upgrade Account", | 237 | "service.restrictedHandler.action": "Actualitzar el compte", |
235 | "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required", | 238 | "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required", |
236 | "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.", | 239 | "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.", |
237 | "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.", | 240 | "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.", |
@@ -268,7 +271,7 @@ | |||
268 | "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", | 271 | "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", |
269 | "settings.account.tryReloadServices": "Torna a provar-ho", | 272 | "settings.account.tryReloadServices": "Torna a provar-ho", |
270 | "settings.account.tryReloadUserInfoRequest": "Torna a provar-ho", | 273 | "settings.account.tryReloadUserInfoRequest": "Torna a provar-ho", |
271 | "settings.account.upgradeToPro.label": "Upgrade to Ferdi Professional", | 274 | "settings.account.upgradeToPro.label": "Actualitza a Ferdi Professional", |
272 | "settings.account.userInfoRequestFailed": "No s'ha pogut carregar la informació de l'usuari", | 275 | "settings.account.userInfoRequestFailed": "No s'ha pogut carregar la informació de l'usuari", |
273 | "settings.account.yourLicense": "Your Ferdi License", | 276 | "settings.account.yourLicense": "Your Ferdi License", |
274 | "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: #7367f0)", | 277 | "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: #7367f0)", |
@@ -298,7 +301,7 @@ | |||
298 | "settings.app.form.inactivityLock": "Lock after inactivity", | 301 | "settings.app.form.inactivityLock": "Lock after inactivity", |
299 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", | 302 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", |
300 | "settings.app.form.language": "Idioma", | 303 | "settings.app.form.language": "Idioma", |
301 | "settings.app.form.lockPassword": "Password", | 304 | "settings.app.form.lockPassword": "Contrasenya", |
302 | "settings.app.form.minimizeToSystemTray": "Minimitza Ferdi a la safata del sistema", | 305 | "settings.app.form.minimizeToSystemTray": "Minimitza Ferdi a la safata del sistema", |
303 | "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", | 306 | "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", |
304 | "settings.app.form.predefinedTodoServer": "Todo Server", | 307 | "settings.app.form.predefinedTodoServer": "Todo Server", |
@@ -326,7 +329,7 @@ | |||
326 | "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", | 329 | "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", |
327 | "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", | 330 | "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", |
328 | "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", | 331 | "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", |
329 | "settings.app.lockedPassword": "Password", | 332 | "settings.app.lockedPassword": "Contrasenya", |
330 | "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | 333 | "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", |
331 | "settings.app.restartRequired": "Els canvis requereixen reiniciar", | 334 | "settings.app.restartRequired": "Els canvis requereixen reiniciar", |
332 | "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", | 335 | "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", |
@@ -462,11 +465,11 @@ | |||
462 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", | 465 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", |
463 | "sidebar.addNewService": "Afegeix nou servei", | 466 | "sidebar.addNewService": "Afegeix nou servei", |
464 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | 467 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", |
465 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", | 468 | "sidebar.closeWorkspaceDrawer": "Tancar el calaix d'espais de treball", |
466 | "sidebar.lockFerdi": "Lock Ferdi", | 469 | "sidebar.lockFerdi": "Bloqueja Ferdi", |
467 | "sidebar.muteApp": "Desactivar notificacions i à udio", | 470 | "sidebar.muteApp": "Desactivar notificacions i à udio", |
468 | "sidebar.openTodosDrawer": "Open Ferdi Todos", | 471 | "sidebar.openTodosDrawer": "Open Ferdi Todos", |
469 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", | 472 | "sidebar.openWorkspaceDrawer": "Obrir el calaix d'espais de treball", |
470 | "sidebar.settings": "Configuració", | 473 | "sidebar.settings": "Configuració", |
471 | "sidebar.unmuteApp": "Activar notificacions i à udio", | 474 | "sidebar.unmuteApp": "Activar notificacions i à udio", |
472 | "signup.email.label": "Correu electrònic", | 475 | "signup.email.label": "Correu electrònic", |
@@ -478,7 +481,7 @@ | |||
478 | "signup.legal.privacy": "Declaració de privacitat", | 481 | "signup.legal.privacy": "Declaració de privacitat", |
479 | "signup.legal.terms": "Termes del Servei", | 482 | "signup.legal.terms": "Termes del Servei", |
480 | "signup.link.login": "Ja teniu un compte, iniciar la sessió?", | 483 | "signup.link.login": "Ja teniu un compte, iniciar la sessió?", |
481 | "signup.password.label": "Password", | 484 | "signup.password.label": "Contrasenya", |
482 | "signup.submit.label": "Crea un compte", | 485 | "signup.submit.label": "Crea un compte", |
483 | "subscription.bestValue": "Best value", | 486 | "subscription.bestValue": "Best value", |
484 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", | 487 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", |
@@ -488,7 +491,7 @@ | |||
488 | "subscription.interval.per": "per {interval}", | 491 | "subscription.interval.per": "per {interval}", |
489 | "subscription.interval.perMonth": "per month", | 492 | "subscription.interval.perMonth": "per month", |
490 | "subscription.interval.perMonthPerUser": "per month & user", | 493 | "subscription.interval.perMonthPerUser": "per month & user", |
491 | "subscription.planItem.upgradeAccount": "Upgrade Account", | 494 | "subscription.planItem.upgradeAccount": "Actualitzar el compte", |
492 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", | 495 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", |
493 | "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | 496 | "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
494 | "subscriptionPopup.buttonCancel": "Cancel·la", | 497 | "subscriptionPopup.buttonCancel": "Cancel·la", |
@@ -507,16 +510,16 @@ | |||
507 | "validation.oneRequired": "At least one is required", | 510 | "validation.oneRequired": "At least one is required", |
508 | "validation.required": "{field} es requerit", | 511 | "validation.required": "{field} es requerit", |
509 | "validation.url": "{field} es una URL no và lida", | 512 | "validation.url": "{field} es una URL no và lida", |
510 | "webControls.back": "Back", | 513 | "webControls.back": "Enrere", |
511 | "webControls.forward": "Forward", | 514 | "webControls.forward": "Endavant", |
512 | "webControls.goHome": "Home", | 515 | "webControls.goHome": "Inici", |
513 | "webControls.openInBrowser": "Open in Browser", | 516 | "webControls.openInBrowser": "Open in Browser", |
514 | "webControls.reload": "Recarrega", | 517 | "webControls.reload": "Recarrega", |
515 | "welcome.loginButton": "Inicia sessió al teu compte", | 518 | "welcome.loginButton": "Inicia sessió al teu compte", |
516 | "welcome.signupButton": "Crea un compte gratuït", | 519 | "welcome.signupButton": "Crea un compte gratuït", |
517 | "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", | 520 | "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", |
518 | "workspaceDrawer.allServices": "Tots els serveis", | 521 | "workspaceDrawer.allServices": "Tots els serveis", |
519 | "workspaceDrawer.headline": "Workspaces", | 522 | "workspaceDrawer.headline": "Espais de treball", |
520 | "workspaceDrawer.item.contextMenuEdit": "edit", | 523 | "workspaceDrawer.item.contextMenuEdit": "edit", |
521 | "workspaceDrawer.item.noServicesAddedYet": "No services added yet", | 524 | "workspaceDrawer.item.noServicesAddedYet": "No services added yet", |
522 | "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", | 525 | "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 136602524..5ac77ec4d 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Obnovit", | 2 | "app.errorHandler.action": "Obnovit", |
3 | "app.errorHandler.headline": "Něco se pokazilo", | 3 | "app.errorHandler.headline": "Něco se pokazilo", |
4 | "changeserver.customServerLabel": "Vlastnà server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Odeslat", | 7 | "changeserver.submit": "Odeslat", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Obnovit službu", | 10 | "connectionLostBanner.cta": "Obnovit službu", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 38772d36a..fd36c91a7 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Neu laden", | 2 | "app.errorHandler.action": "Neu laden", |
3 | "app.errorHandler.headline": "Es ist ein Fehler aufgetreten", | 3 | "app.errorHandler.headline": "Es ist ein Fehler aufgetreten", |
4 | "changeserver.customServerLabel": "Eigener Server", | ||
4 | "changeserver.headline": "Server wechseln", | 5 | "changeserver.headline": "Server wechseln", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Absenden", | 7 | "changeserver.submit": "Absenden", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Dienst neu laden", | 10 | "connectionLostBanner.cta": "Dienst neu laden", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index c80574aa8..244ceb521 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -49,39 +49,78 @@ | |||
49 | "defaultMessage": "!!!Change server", | 49 | "defaultMessage": "!!!Change server", |
50 | "end": { | 50 | "end": { |
51 | "column": 3, | 51 | "column": 3, |
52 | "line": 14 | 52 | "line": 16 |
53 | }, | 53 | }, |
54 | "file": "src/components/auth/ChangeServer.js", | 54 | "file": "src/components/auth/ChangeServer.js", |
55 | "id": "changeserver.headline", | 55 | "id": "changeserver.headline", |
56 | "start": { | 56 | "start": { |
57 | "column": 12, | 57 | "column": 12, |
58 | "line": 11 | 58 | "line": 13 |
59 | } | 59 | } |
60 | }, | 60 | }, |
61 | { | 61 | { |
62 | "defaultMessage": "!!!Server", | 62 | "defaultMessage": "!!!Server", |
63 | "end": { | 63 | "end": { |
64 | "column": 3, | 64 | "column": 3, |
65 | "line": 18 | 65 | "line": 20 |
66 | }, | 66 | }, |
67 | "file": "src/components/auth/ChangeServer.js", | 67 | "file": "src/components/auth/ChangeServer.js", |
68 | "id": "changeserver.label", | 68 | "id": "changeserver.label", |
69 | "start": { | 69 | "start": { |
70 | "column": 9, | 70 | "column": 9, |
71 | "line": 15 | 71 | "line": 17 |
72 | } | ||
73 | }, | ||
74 | { | ||
75 | "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved", | ||
76 | "end": { | ||
77 | "column": 3, | ||
78 | "line": 24 | ||
79 | }, | ||
80 | "file": "src/components/auth/ChangeServer.js", | ||
81 | "id": "changeserver.warning", | ||
82 | "start": { | ||
83 | "column": 11, | ||
84 | "line": 21 | ||
85 | } | ||
86 | }, | ||
87 | { | ||
88 | "defaultMessage": "!!!Custom server", | ||
89 | "end": { | ||
90 | "column": 3, | ||
91 | "line": 28 | ||
92 | }, | ||
93 | "file": "src/components/auth/ChangeServer.js", | ||
94 | "id": "changeserver.customServerLabel", | ||
95 | "start": { | ||
96 | "column": 21, | ||
97 | "line": 25 | ||
98 | } | ||
99 | }, | ||
100 | { | ||
101 | "defaultMessage": "!!!Enter a valid URL", | ||
102 | "end": { | ||
103 | "column": 3, | ||
104 | "line": 32 | ||
105 | }, | ||
106 | "file": "src/components/auth/ChangeServer.js", | ||
107 | "id": "changeserver.urlError", | ||
108 | "start": { | ||
109 | "column": 12, | ||
110 | "line": 29 | ||
72 | } | 111 | } |
73 | }, | 112 | }, |
74 | { | 113 | { |
75 | "defaultMessage": "!!!Submit", | 114 | "defaultMessage": "!!!Submit", |
76 | "end": { | 115 | "end": { |
77 | "column": 3, | 116 | "column": 3, |
78 | "line": 22 | 117 | "line": 36 |
79 | }, | 118 | }, |
80 | "file": "src/components/auth/ChangeServer.js", | 119 | "file": "src/components/auth/ChangeServer.js", |
81 | "id": "changeserver.submit", | 120 | "id": "changeserver.submit", |
82 | "start": { | 121 | "start": { |
83 | "column": 10, | 122 | "column": 10, |
84 | "line": 19 | 123 | "line": 33 |
85 | } | 124 | } |
86 | } | 125 | } |
87 | ], | 126 | ], |
@@ -1074,117 +1113,117 @@ | |||
1074 | "defaultMessage": "!!!Settings", | 1113 | "defaultMessage": "!!!Settings", |
1075 | "end": { | 1114 | "end": { |
1076 | "column": 3, | 1115 | "column": 3, |
1077 | "line": 18 | 1116 | "line": 21 |
1078 | }, | 1117 | }, |
1079 | "file": "src/components/layout/Sidebar.js", | 1118 | "file": "src/components/layout/Sidebar.js", |
1080 | "id": "sidebar.settings", | 1119 | "id": "sidebar.settings", |
1081 | "start": { | 1120 | "start": { |
1082 | "column": 12, | 1121 | "column": 12, |
1083 | "line": 15 | 1122 | "line": 18 |
1084 | } | 1123 | } |
1085 | }, | 1124 | }, |
1086 | { | 1125 | { |
1087 | "defaultMessage": "!!!Add new service", | 1126 | "defaultMessage": "!!!Add new service", |
1088 | "end": { | 1127 | "end": { |
1089 | "column": 3, | 1128 | "column": 3, |
1090 | "line": 22 | 1129 | "line": 25 |
1091 | }, | 1130 | }, |
1092 | "file": "src/components/layout/Sidebar.js", | 1131 | "file": "src/components/layout/Sidebar.js", |
1093 | "id": "sidebar.addNewService", | 1132 | "id": "sidebar.addNewService", |
1094 | "start": { | 1133 | "start": { |
1095 | "column": 17, | 1134 | "column": 17, |
1096 | "line": 19 | 1135 | "line": 22 |
1097 | } | 1136 | } |
1098 | }, | 1137 | }, |
1099 | { | 1138 | { |
1100 | "defaultMessage": "!!!Disable notifications & audio", | 1139 | "defaultMessage": "!!!Disable notifications & audio", |
1101 | "end": { | 1140 | "end": { |
1102 | "column": 3, | 1141 | "column": 3, |
1103 | "line": 26 | 1142 | "line": 29 |
1104 | }, | 1143 | }, |
1105 | "file": "src/components/layout/Sidebar.js", | 1144 | "file": "src/components/layout/Sidebar.js", |
1106 | "id": "sidebar.muteApp", | 1145 | "id": "sidebar.muteApp", |
1107 | "start": { | 1146 | "start": { |
1108 | "column": 8, | 1147 | "column": 8, |
1109 | "line": 23 | 1148 | "line": 26 |
1110 | } | 1149 | } |
1111 | }, | 1150 | }, |
1112 | { | 1151 | { |
1113 | "defaultMessage": "!!!Enable notifications & audio", | 1152 | "defaultMessage": "!!!Enable notifications & audio", |
1114 | "end": { | 1153 | "end": { |
1115 | "column": 3, | 1154 | "column": 3, |
1116 | "line": 30 | 1155 | "line": 33 |
1117 | }, | 1156 | }, |
1118 | "file": "src/components/layout/Sidebar.js", | 1157 | "file": "src/components/layout/Sidebar.js", |
1119 | "id": "sidebar.unmuteApp", | 1158 | "id": "sidebar.unmuteApp", |
1120 | "start": { | 1159 | "start": { |
1121 | "column": 10, | 1160 | "column": 10, |
1122 | "line": 27 | 1161 | "line": 30 |
1123 | } | 1162 | } |
1124 | }, | 1163 | }, |
1125 | { | 1164 | { |
1126 | "defaultMessage": "!!!Open workspace drawer", | 1165 | "defaultMessage": "!!!Open workspace drawer", |
1127 | "end": { | 1166 | "end": { |
1128 | "column": 3, | 1167 | "column": 3, |
1129 | "line": 34 | 1168 | "line": 37 |
1130 | }, | 1169 | }, |
1131 | "file": "src/components/layout/Sidebar.js", | 1170 | "file": "src/components/layout/Sidebar.js", |
1132 | "id": "sidebar.openWorkspaceDrawer", | 1171 | "id": "sidebar.openWorkspaceDrawer", |
1133 | "start": { | 1172 | "start": { |
1134 | "column": 23, | 1173 | "column": 23, |
1135 | "line": 31 | 1174 | "line": 34 |
1136 | } | 1175 | } |
1137 | }, | 1176 | }, |
1138 | { | 1177 | { |
1139 | "defaultMessage": "!!!Close workspace drawer", | 1178 | "defaultMessage": "!!!Close workspace drawer", |
1140 | "end": { | 1179 | "end": { |
1141 | "column": 3, | 1180 | "column": 3, |
1142 | "line": 38 | 1181 | "line": 41 |
1143 | }, | 1182 | }, |
1144 | "file": "src/components/layout/Sidebar.js", | 1183 | "file": "src/components/layout/Sidebar.js", |
1145 | "id": "sidebar.closeWorkspaceDrawer", | 1184 | "id": "sidebar.closeWorkspaceDrawer", |
1146 | "start": { | 1185 | "start": { |
1147 | "column": 24, | 1186 | "column": 24, |
1148 | "line": 35 | 1187 | "line": 38 |
1149 | } | 1188 | } |
1150 | }, | 1189 | }, |
1151 | { | 1190 | { |
1152 | "defaultMessage": "!!!Open Franz Todos", | 1191 | "defaultMessage": "!!!Open Franz Todos", |
1153 | "end": { | 1192 | "end": { |
1154 | "column": 3, | 1193 | "column": 3, |
1155 | "line": 42 | 1194 | "line": 45 |
1156 | }, | 1195 | }, |
1157 | "file": "src/components/layout/Sidebar.js", | 1196 | "file": "src/components/layout/Sidebar.js", |
1158 | "id": "sidebar.openTodosDrawer", | 1197 | "id": "sidebar.openTodosDrawer", |
1159 | "start": { | 1198 | "start": { |
1160 | "column": 19, | 1199 | "column": 19, |
1161 | "line": 39 | 1200 | "line": 42 |
1162 | } | 1201 | } |
1163 | }, | 1202 | }, |
1164 | { | 1203 | { |
1165 | "defaultMessage": "!!!Close Franz Todos", | 1204 | "defaultMessage": "!!!Close Franz Todos", |
1166 | "end": { | 1205 | "end": { |
1167 | "column": 3, | 1206 | "column": 3, |
1168 | "line": 46 | 1207 | "line": 49 |
1169 | }, | 1208 | }, |
1170 | "file": "src/components/layout/Sidebar.js", | 1209 | "file": "src/components/layout/Sidebar.js", |
1171 | "id": "sidebar.closeTodosDrawer", | 1210 | "id": "sidebar.closeTodosDrawer", |
1172 | "start": { | 1211 | "start": { |
1173 | "column": 20, | 1212 | "column": 20, |
1174 | "line": 43 | 1213 | "line": 46 |
1175 | } | 1214 | } |
1176 | }, | 1215 | }, |
1177 | { | 1216 | { |
1178 | "defaultMessage": "!!!Lock Ferdi", | 1217 | "defaultMessage": "!!!Lock Ferdi", |
1179 | "end": { | 1218 | "end": { |
1180 | "column": 3, | 1219 | "column": 3, |
1181 | "line": 50 | 1220 | "line": 53 |
1182 | }, | 1221 | }, |
1183 | "file": "src/components/layout/Sidebar.js", | 1222 | "file": "src/components/layout/Sidebar.js", |
1184 | "id": "sidebar.lockFerdi", | 1223 | "id": "sidebar.lockFerdi", |
1185 | "start": { | 1224 | "start": { |
1186 | "column": 13, | 1225 | "column": 13, |
1187 | "line": 47 | 1226 | "line": 50 |
1188 | } | 1227 | } |
1189 | } | 1228 | } |
1190 | ], | 1229 | ], |
@@ -4541,494 +4580,494 @@ | |||
4541 | "defaultMessage": "!!!Launch Ferdi on start", | 4580 | "defaultMessage": "!!!Launch Ferdi on start", |
4542 | "end": { | 4581 | "end": { |
4543 | "column": 3, | 4582 | "column": 3, |
4544 | "line": 32 | 4583 | "line": 33 |
4545 | }, | 4584 | }, |
4546 | "file": "src/containers/settings/EditSettingsScreen.js", | 4585 | "file": "src/containers/settings/EditSettingsScreen.js", |
4547 | "id": "settings.app.form.autoLaunchOnStart", | 4586 | "id": "settings.app.form.autoLaunchOnStart", |
4548 | "start": { | 4587 | "start": { |
4549 | "column": 21, | 4588 | "column": 21, |
4550 | "line": 29 | 4589 | "line": 30 |
4551 | } | 4590 | } |
4552 | }, | 4591 | }, |
4553 | { | 4592 | { |
4554 | "defaultMessage": "!!!Open in background", | 4593 | "defaultMessage": "!!!Open in background", |
4555 | "end": { | 4594 | "end": { |
4556 | "column": 3, | 4595 | "column": 3, |
4557 | "line": 36 | 4596 | "line": 37 |
4558 | }, | 4597 | }, |
4559 | "file": "src/containers/settings/EditSettingsScreen.js", | 4598 | "file": "src/containers/settings/EditSettingsScreen.js", |
4560 | "id": "settings.app.form.autoLaunchInBackground", | 4599 | "id": "settings.app.form.autoLaunchInBackground", |
4561 | "start": { | 4600 | "start": { |
4562 | "column": 26, | 4601 | "column": 26, |
4563 | "line": 33 | 4602 | "line": 34 |
4564 | } | 4603 | } |
4565 | }, | 4604 | }, |
4566 | { | 4605 | { |
4567 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", | 4606 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", |
4568 | "end": { | 4607 | "end": { |
4569 | "column": 3, | 4608 | "column": 3, |
4570 | "line": 40 | 4609 | "line": 41 |
4571 | }, | 4610 | }, |
4572 | "file": "src/containers/settings/EditSettingsScreen.js", | 4611 | "file": "src/containers/settings/EditSettingsScreen.js", |
4573 | "id": "settings.app.form.runInBackground", | 4612 | "id": "settings.app.form.runInBackground", |
4574 | "start": { | 4613 | "start": { |
4575 | "column": 19, | 4614 | "column": 19, |
4576 | "line": 37 | 4615 | "line": 38 |
4577 | } | 4616 | } |
4578 | }, | 4617 | }, |
4579 | { | 4618 | { |
4580 | "defaultMessage": "!!!Start minimized", | 4619 | "defaultMessage": "!!!Start minimized", |
4581 | "end": { | 4620 | "end": { |
4582 | "column": 3, | 4621 | "column": 3, |
4583 | "line": 44 | 4622 | "line": 45 |
4584 | }, | 4623 | }, |
4585 | "file": "src/containers/settings/EditSettingsScreen.js", | 4624 | "file": "src/containers/settings/EditSettingsScreen.js", |
4586 | "id": "settings.app.form.startMinimized", | 4625 | "id": "settings.app.form.startMinimized", |
4587 | "start": { | 4626 | "start": { |
4588 | "column": 18, | 4627 | "column": 18, |
4589 | "line": 41 | 4628 | "line": 42 |
4590 | } | 4629 | } |
4591 | }, | 4630 | }, |
4592 | { | 4631 | { |
4593 | "defaultMessage": "!!!Always show Ferdi in system tray", | 4632 | "defaultMessage": "!!!Always show Ferdi in system tray", |
4594 | "end": { | 4633 | "end": { |
4595 | "column": 3, | 4634 | "column": 3, |
4596 | "line": 48 | 4635 | "line": 49 |
4597 | }, | 4636 | }, |
4598 | "file": "src/containers/settings/EditSettingsScreen.js", | 4637 | "file": "src/containers/settings/EditSettingsScreen.js", |
4599 | "id": "settings.app.form.enableSystemTray", | 4638 | "id": "settings.app.form.enableSystemTray", |
4600 | "start": { | 4639 | "start": { |
4601 | "column": 20, | 4640 | "column": 20, |
4602 | "line": 45 | 4641 | "line": 46 |
4603 | } | 4642 | } |
4604 | }, | 4643 | }, |
4605 | { | 4644 | { |
4606 | "defaultMessage": "!!!Reload Ferdi after system resume", | 4645 | "defaultMessage": "!!!Reload Ferdi after system resume", |
4607 | "end": { | 4646 | "end": { |
4608 | "column": 3, | 4647 | "column": 3, |
4609 | "line": 52 | 4648 | "line": 53 |
4610 | }, | 4649 | }, |
4611 | "file": "src/containers/settings/EditSettingsScreen.js", | 4650 | "file": "src/containers/settings/EditSettingsScreen.js", |
4612 | "id": "settings.app.form.reloadAfterResume", | 4651 | "id": "settings.app.form.reloadAfterResume", |
4613 | "start": { | 4652 | "start": { |
4614 | "column": 21, | 4653 | "column": 21, |
4615 | "line": 49 | 4654 | "line": 50 |
4616 | } | 4655 | } |
4617 | }, | 4656 | }, |
4618 | { | 4657 | { |
4619 | "defaultMessage": "!!!Minimize Ferdi to system tray", | 4658 | "defaultMessage": "!!!Minimize Ferdi to system tray", |
4620 | "end": { | 4659 | "end": { |
4621 | "column": 3, | 4660 | "column": 3, |
4622 | "line": 56 | 4661 | "line": 57 |
4623 | }, | 4662 | }, |
4624 | "file": "src/containers/settings/EditSettingsScreen.js", | 4663 | "file": "src/containers/settings/EditSettingsScreen.js", |
4625 | "id": "settings.app.form.minimizeToSystemTray", | 4664 | "id": "settings.app.form.minimizeToSystemTray", |
4626 | "start": { | 4665 | "start": { |
4627 | "column": 24, | 4666 | "column": 24, |
4628 | "line": 53 | 4667 | "line": 54 |
4629 | } | 4668 | } |
4630 | }, | 4669 | }, |
4631 | { | 4670 | { |
4632 | "defaultMessage": "!!!Don't show message content in notifications", | 4671 | "defaultMessage": "!!!Don't show message content in notifications", |
4633 | "end": { | 4672 | "end": { |
4634 | "column": 3, | 4673 | "column": 3, |
4635 | "line": 60 | 4674 | "line": 61 |
4636 | }, | 4675 | }, |
4637 | "file": "src/containers/settings/EditSettingsScreen.js", | 4676 | "file": "src/containers/settings/EditSettingsScreen.js", |
4638 | "id": "settings.app.form.privateNotifications", | 4677 | "id": "settings.app.form.privateNotifications", |
4639 | "start": { | 4678 | "start": { |
4640 | "column": 24, | 4679 | "column": 24, |
4641 | "line": 57 | 4680 | "line": 58 |
4642 | } | 4681 | } |
4643 | }, | 4682 | }, |
4644 | { | 4683 | { |
4645 | "defaultMessage": "!!!Navigation bar behaviour", | 4684 | "defaultMessage": "!!!Navigation bar behaviour", |
4646 | "end": { | 4685 | "end": { |
4647 | "column": 3, | 4686 | "column": 3, |
4648 | "line": 64 | 4687 | "line": 65 |
4649 | }, | 4688 | }, |
4650 | "file": "src/containers/settings/EditSettingsScreen.js", | 4689 | "file": "src/containers/settings/EditSettingsScreen.js", |
4651 | "id": "settings.app.form.navigationBarBehaviour", | 4690 | "id": "settings.app.form.navigationBarBehaviour", |
4652 | "start": { | 4691 | "start": { |
4653 | "column": 26, | 4692 | "column": 26, |
4654 | "line": 61 | 4693 | "line": 62 |
4655 | } | 4694 | } |
4656 | }, | 4695 | }, |
4657 | { | 4696 | { |
4658 | "defaultMessage": "!!!Send telemetry data", | 4697 | "defaultMessage": "!!!Send telemetry data", |
4659 | "end": { | 4698 | "end": { |
4660 | "column": 3, | 4699 | "column": 3, |
4661 | "line": 68 | 4700 | "line": 69 |
4662 | }, | 4701 | }, |
4663 | "file": "src/containers/settings/EditSettingsScreen.js", | 4702 | "file": "src/containers/settings/EditSettingsScreen.js", |
4664 | "id": "settings.app.form.sentry", | 4703 | "id": "settings.app.form.sentry", |
4665 | "start": { | 4704 | "start": { |
4666 | "column": 10, | 4705 | "column": 10, |
4667 | "line": 65 | 4706 | "line": 66 |
4668 | } | 4707 | } |
4669 | }, | 4708 | }, |
4670 | { | 4709 | { |
4671 | "defaultMessage": "!!!Enable service hibernation", | 4710 | "defaultMessage": "!!!Enable service hibernation", |
4672 | "end": { | 4711 | "end": { |
4673 | "column": 3, | 4712 | "column": 3, |
4674 | "line": 72 | 4713 | "line": 73 |
4675 | }, | 4714 | }, |
4676 | "file": "src/containers/settings/EditSettingsScreen.js", | 4715 | "file": "src/containers/settings/EditSettingsScreen.js", |
4677 | "id": "settings.app.form.hibernate", | 4716 | "id": "settings.app.form.hibernate", |
4678 | "start": { | 4717 | "start": { |
4679 | "column": 13, | 4718 | "column": 13, |
4680 | "line": 69 | 4719 | "line": 70 |
4681 | } | 4720 | } |
4682 | }, | 4721 | }, |
4683 | { | 4722 | { |
4684 | "defaultMessage": "!!!Keep services in hibernation on startup", | 4723 | "defaultMessage": "!!!Keep services in hibernation on startup", |
4685 | "end": { | 4724 | "end": { |
4686 | "column": 3, | 4725 | "column": 3, |
4687 | "line": 76 | 4726 | "line": 77 |
4688 | }, | 4727 | }, |
4689 | "file": "src/containers/settings/EditSettingsScreen.js", | 4728 | "file": "src/containers/settings/EditSettingsScreen.js", |
4690 | "id": "settings.app.form.hibernateOnStartup", | 4729 | "id": "settings.app.form.hibernateOnStartup", |
4691 | "start": { | 4730 | "start": { |
4692 | "column": 22, | 4731 | "column": 22, |
4693 | "line": 73 | 4732 | "line": 74 |
4694 | } | 4733 | } |
4695 | }, | 4734 | }, |
4696 | { | 4735 | { |
4697 | "defaultMessage": "!!!Hibernation strategy", | 4736 | "defaultMessage": "!!!Hibernation strategy", |
4698 | "end": { | 4737 | "end": { |
4699 | "column": 3, | 4738 | "column": 3, |
4700 | "line": 80 | 4739 | "line": 81 |
4701 | }, | 4740 | }, |
4702 | "file": "src/containers/settings/EditSettingsScreen.js", | 4741 | "file": "src/containers/settings/EditSettingsScreen.js", |
4703 | "id": "settings.app.form.hibernationStrategy", | 4742 | "id": "settings.app.form.hibernationStrategy", |
4704 | "start": { | 4743 | "start": { |
4705 | "column": 23, | 4744 | "column": 23, |
4706 | "line": 77 | 4745 | "line": 78 |
4707 | } | 4746 | } |
4708 | }, | 4747 | }, |
4709 | { | 4748 | { |
4710 | "defaultMessage": "!!!Todo Server", | 4749 | "defaultMessage": "!!!Todo Server", |
4711 | "end": { | 4750 | "end": { |
4712 | "column": 3, | 4751 | "column": 3, |
4713 | "line": 84 | 4752 | "line": 85 |
4714 | }, | 4753 | }, |
4715 | "file": "src/containers/settings/EditSettingsScreen.js", | 4754 | "file": "src/containers/settings/EditSettingsScreen.js", |
4716 | "id": "settings.app.form.predefinedTodoServer", | 4755 | "id": "settings.app.form.predefinedTodoServer", |
4717 | "start": { | 4756 | "start": { |
4718 | "column": 24, | 4757 | "column": 24, |
4719 | "line": 81 | 4758 | "line": 82 |
4720 | } | 4759 | } |
4721 | }, | 4760 | }, |
4722 | { | 4761 | { |
4723 | "defaultMessage": "!!!Custom TodoServer", | 4762 | "defaultMessage": "!!!Custom TodoServer", |
4724 | "end": { | 4763 | "end": { |
4725 | "column": 3, | 4764 | "column": 3, |
4726 | "line": 88 | 4765 | "line": 89 |
4727 | }, | 4766 | }, |
4728 | "file": "src/containers/settings/EditSettingsScreen.js", | 4767 | "file": "src/containers/settings/EditSettingsScreen.js", |
4729 | "id": "settings.app.form.customTodoServer", | 4768 | "id": "settings.app.form.customTodoServer", |
4730 | "start": { | 4769 | "start": { |
4731 | "column": 20, | 4770 | "column": 20, |
4732 | "line": 85 | 4771 | "line": 86 |
4733 | } | 4772 | } |
4734 | }, | 4773 | }, |
4735 | { | 4774 | { |
4736 | "defaultMessage": "!!!Enable Password Lock", | 4775 | "defaultMessage": "!!!Enable Password Lock", |
4737 | "end": { | 4776 | "end": { |
4738 | "column": 3, | 4777 | "column": 3, |
4739 | "line": 92 | 4778 | "line": 93 |
4740 | }, | 4779 | }, |
4741 | "file": "src/containers/settings/EditSettingsScreen.js", | 4780 | "file": "src/containers/settings/EditSettingsScreen.js", |
4742 | "id": "settings.app.form.enableLock", | 4781 | "id": "settings.app.form.enableLock", |
4743 | "start": { | 4782 | "start": { |
4744 | "column": 14, | 4783 | "column": 14, |
4745 | "line": 89 | 4784 | "line": 90 |
4746 | } | 4785 | } |
4747 | }, | 4786 | }, |
4748 | { | 4787 | { |
4749 | "defaultMessage": "!!!Password", | 4788 | "defaultMessage": "!!!Password", |
4750 | "end": { | 4789 | "end": { |
4751 | "column": 3, | 4790 | "column": 3, |
4752 | "line": 96 | 4791 | "line": 97 |
4753 | }, | 4792 | }, |
4754 | "file": "src/containers/settings/EditSettingsScreen.js", | 4793 | "file": "src/containers/settings/EditSettingsScreen.js", |
4755 | "id": "settings.app.form.lockPassword", | 4794 | "id": "settings.app.form.lockPassword", |
4756 | "start": { | 4795 | "start": { |
4757 | "column": 16, | 4796 | "column": 16, |
4758 | "line": 93 | 4797 | "line": 94 |
4759 | } | 4798 | } |
4760 | }, | 4799 | }, |
4761 | { | 4800 | { |
4762 | "defaultMessage": "!!!Allow using Touch ID to unlock", | 4801 | "defaultMessage": "!!!Allow using Touch ID to unlock", |
4763 | "end": { | 4802 | "end": { |
4764 | "column": 3, | 4803 | "column": 3, |
4765 | "line": 100 | 4804 | "line": 101 |
4766 | }, | 4805 | }, |
4767 | "file": "src/containers/settings/EditSettingsScreen.js", | 4806 | "file": "src/containers/settings/EditSettingsScreen.js", |
4768 | "id": "settings.app.form.useTouchIdToUnlock", | 4807 | "id": "settings.app.form.useTouchIdToUnlock", |
4769 | "start": { | 4808 | "start": { |
4770 | "column": 22, | 4809 | "column": 22, |
4771 | "line": 97 | 4810 | "line": 98 |
4772 | } | 4811 | } |
4773 | }, | 4812 | }, |
4774 | { | 4813 | { |
4775 | "defaultMessage": "!!!Lock after inactivity", | 4814 | "defaultMessage": "!!!Lock after inactivity", |
4776 | "end": { | 4815 | "end": { |
4777 | "column": 3, | 4816 | "column": 3, |
4778 | "line": 104 | 4817 | "line": 105 |
4779 | }, | 4818 | }, |
4780 | "file": "src/containers/settings/EditSettingsScreen.js", | 4819 | "file": "src/containers/settings/EditSettingsScreen.js", |
4781 | "id": "settings.app.form.inactivityLock", | 4820 | "id": "settings.app.form.inactivityLock", |
4782 | "start": { | 4821 | "start": { |
4783 | "column": 18, | 4822 | "column": 18, |
4784 | "line": 101 | 4823 | "line": 102 |
4785 | } | 4824 | } |
4786 | }, | 4825 | }, |
4787 | { | 4826 | { |
4788 | "defaultMessage": "!!!Enable scheduled Do-not-Disturb", | 4827 | "defaultMessage": "!!!Enable scheduled Do-not-Disturb", |
4789 | "end": { | 4828 | "end": { |
4790 | "column": 3, | 4829 | "column": 3, |
4791 | "line": 108 | 4830 | "line": 109 |
4792 | }, | 4831 | }, |
4793 | "file": "src/containers/settings/EditSettingsScreen.js", | 4832 | "file": "src/containers/settings/EditSettingsScreen.js", |
4794 | "id": "settings.app.form.scheduledDNDEnabled", | 4833 | "id": "settings.app.form.scheduledDNDEnabled", |
4795 | "start": { | 4834 | "start": { |
4796 | "column": 23, | 4835 | "column": 23, |
4797 | "line": 105 | 4836 | "line": 106 |
4798 | } | 4837 | } |
4799 | }, | 4838 | }, |
4800 | { | 4839 | { |
4801 | "defaultMessage": "!!!From", | 4840 | "defaultMessage": "!!!From", |
4802 | "end": { | 4841 | "end": { |
4803 | "column": 3, | 4842 | "column": 3, |
4804 | "line": 112 | 4843 | "line": 113 |
4805 | }, | 4844 | }, |
4806 | "file": "src/containers/settings/EditSettingsScreen.js", | 4845 | "file": "src/containers/settings/EditSettingsScreen.js", |
4807 | "id": "settings.app.form.scheduledDNDStart", | 4846 | "id": "settings.app.form.scheduledDNDStart", |
4808 | "start": { | 4847 | "start": { |
4809 | "column": 21, | 4848 | "column": 21, |
4810 | "line": 109 | 4849 | "line": 110 |
4811 | } | 4850 | } |
4812 | }, | 4851 | }, |
4813 | { | 4852 | { |
4814 | "defaultMessage": "!!!To", | 4853 | "defaultMessage": "!!!To", |
4815 | "end": { | 4854 | "end": { |
4816 | "column": 3, | 4855 | "column": 3, |
4817 | "line": 116 | 4856 | "line": 117 |
4818 | }, | 4857 | }, |
4819 | "file": "src/containers/settings/EditSettingsScreen.js", | 4858 | "file": "src/containers/settings/EditSettingsScreen.js", |
4820 | "id": "settings.app.form.scheduledDNDEnd", | 4859 | "id": "settings.app.form.scheduledDNDEnd", |
4821 | "start": { | 4860 | "start": { |
4822 | "column": 19, | 4861 | "column": 19, |
4823 | "line": 113 | 4862 | "line": 114 |
4824 | } | 4863 | } |
4825 | }, | 4864 | }, |
4826 | { | 4865 | { |
4827 | "defaultMessage": "!!!Language", | 4866 | "defaultMessage": "!!!Language", |
4828 | "end": { | 4867 | "end": { |
4829 | "column": 3, | 4868 | "column": 3, |
4830 | "line": 120 | 4869 | "line": 121 |
4831 | }, | 4870 | }, |
4832 | "file": "src/containers/settings/EditSettingsScreen.js", | 4871 | "file": "src/containers/settings/EditSettingsScreen.js", |
4833 | "id": "settings.app.form.language", | 4872 | "id": "settings.app.form.language", |
4834 | "start": { | 4873 | "start": { |
4835 | "column": 12, | 4874 | "column": 12, |
4836 | "line": 117 | 4875 | "line": 118 |
4837 | } | 4876 | } |
4838 | }, | 4877 | }, |
4839 | { | 4878 | { |
4840 | "defaultMessage": "!!!Dark Mode", | 4879 | "defaultMessage": "!!!Dark Mode", |
4841 | "end": { | 4880 | "end": { |
4842 | "column": 3, | 4881 | "column": 3, |
4843 | "line": 124 | 4882 | "line": 125 |
4844 | }, | 4883 | }, |
4845 | "file": "src/containers/settings/EditSettingsScreen.js", | 4884 | "file": "src/containers/settings/EditSettingsScreen.js", |
4846 | "id": "settings.app.form.darkMode", | 4885 | "id": "settings.app.form.darkMode", |
4847 | "start": { | 4886 | "start": { |
4848 | "column": 12, | 4887 | "column": 12, |
4849 | "line": 121 | 4888 | "line": 122 |
4850 | } | 4889 | } |
4851 | }, | 4890 | }, |
4852 | { | 4891 | { |
4853 | "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", | 4892 | "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", |
4854 | "end": { | 4893 | "end": { |
4855 | "column": 3, | 4894 | "column": 3, |
4856 | "line": 128 | 4895 | "line": 129 |
4857 | }, | 4896 | }, |
4858 | "file": "src/containers/settings/EditSettingsScreen.js", | 4897 | "file": "src/containers/settings/EditSettingsScreen.js", |
4859 | "id": "settings.app.form.adaptableDarkMode", | 4898 | "id": "settings.app.form.adaptableDarkMode", |
4860 | "start": { | 4899 | "start": { |
4861 | "column": 21, | 4900 | "column": 21, |
4862 | "line": 125 | 4901 | "line": 126 |
4863 | } | 4902 | } |
4864 | }, | 4903 | }, |
4865 | { | 4904 | { |
4866 | "defaultMessage": "!!!Enable universal Dark Mode", | 4905 | "defaultMessage": "!!!Enable universal Dark Mode", |
4867 | "end": { | 4906 | "end": { |
4868 | "column": 3, | 4907 | "column": 3, |
4869 | "line": 132 | 4908 | "line": 133 |
4870 | }, | 4909 | }, |
4871 | "file": "src/containers/settings/EditSettingsScreen.js", | 4910 | "file": "src/containers/settings/EditSettingsScreen.js", |
4872 | "id": "settings.app.form.universalDarkMode", | 4911 | "id": "settings.app.form.universalDarkMode", |
4873 | "start": { | 4912 | "start": { |
4874 | "column": 21, | 4913 | "column": 21, |
4875 | "line": 129 | 4914 | "line": 130 |
4876 | } | 4915 | } |
4877 | }, | 4916 | }, |
4878 | { | 4917 | { |
4879 | "defaultMessage": "!!!Sidebar width", | 4918 | "defaultMessage": "!!!Sidebar width", |
4880 | "end": { | 4919 | "end": { |
4881 | "column": 3, | 4920 | "column": 3, |
4882 | "line": 136 | 4921 | "line": 137 |
4883 | }, | 4922 | }, |
4884 | "file": "src/containers/settings/EditSettingsScreen.js", | 4923 | "file": "src/containers/settings/EditSettingsScreen.js", |
4885 | "id": "settings.app.form.serviceRibbonWidth", | 4924 | "id": "settings.app.form.serviceRibbonWidth", |
4886 | "start": { | 4925 | "start": { |
4887 | "column": 22, | 4926 | "column": 22, |
4888 | "line": 133 | 4927 | "line": 134 |
4889 | } | 4928 | } |
4890 | }, | 4929 | }, |
4891 | { | 4930 | { |
4892 | "defaultMessage": "!!!Service icon size", | 4931 | "defaultMessage": "!!!Service icon size", |
4893 | "end": { | 4932 | "end": { |
4894 | "column": 3, | 4933 | "column": 3, |
4895 | "line": 140 | 4934 | "line": 141 |
4896 | }, | 4935 | }, |
4897 | "file": "src/containers/settings/EditSettingsScreen.js", | 4936 | "file": "src/containers/settings/EditSettingsScreen.js", |
4898 | "id": "settings.app.form.iconSize", | 4937 | "id": "settings.app.form.iconSize", |
4899 | "start": { | 4938 | "start": { |
4900 | "column": 12, | 4939 | "column": 12, |
4901 | "line": 137 | 4940 | "line": 138 |
4902 | } | 4941 | } |
4903 | }, | 4942 | }, |
4904 | { | 4943 | { |
4905 | "defaultMessage": "!!!Accent color", | 4944 | "defaultMessage": "!!!Accent color", |
4906 | "end": { | 4945 | "end": { |
4907 | "column": 3, | 4946 | "column": 3, |
4908 | "line": 144 | 4947 | "line": 145 |
4909 | }, | 4948 | }, |
4910 | "file": "src/containers/settings/EditSettingsScreen.js", | 4949 | "file": "src/containers/settings/EditSettingsScreen.js", |
4911 | "id": "settings.app.form.accentColor", | 4950 | "id": "settings.app.form.accentColor", |
4912 | "start": { | 4951 | "start": { |
4913 | "column": 15, | 4952 | "column": 15, |
4914 | "line": 141 | 4953 | "line": 142 |
4915 | } | 4954 | } |
4916 | }, | 4955 | }, |
4917 | { | 4956 | { |
4918 | "defaultMessage": "!!!Display disabled services tabs", | 4957 | "defaultMessage": "!!!Display disabled services tabs", |
4919 | "end": { | 4958 | "end": { |
4920 | "column": 3, | 4959 | "column": 3, |
4921 | "line": 148 | 4960 | "line": 149 |
4922 | }, | 4961 | }, |
4923 | "file": "src/containers/settings/EditSettingsScreen.js", | 4962 | "file": "src/containers/settings/EditSettingsScreen.js", |
4924 | "id": "settings.app.form.showDisabledServices", | 4963 | "id": "settings.app.form.showDisabledServices", |
4925 | "start": { | 4964 | "start": { |
4926 | "column": 24, | 4965 | "column": 24, |
4927 | "line": 145 | 4966 | "line": 146 |
4928 | } | 4967 | } |
4929 | }, | 4968 | }, |
4930 | { | 4969 | { |
4931 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 4970 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
4932 | "end": { | 4971 | "end": { |
4933 | "column": 3, | 4972 | "column": 3, |
4934 | "line": 152 | 4973 | "line": 153 |
4935 | }, | 4974 | }, |
4936 | "file": "src/containers/settings/EditSettingsScreen.js", | 4975 | "file": "src/containers/settings/EditSettingsScreen.js", |
4937 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | 4976 | "id": "settings.app.form.showMessagesBadgesWhenMuted", |
4938 | "start": { | 4977 | "start": { |
4939 | "column": 29, | 4978 | "column": 29, |
4940 | "line": 149 | 4979 | "line": 150 |
4941 | } | 4980 | } |
4942 | }, | 4981 | }, |
4943 | { | 4982 | { |
4944 | "defaultMessage": "!!!Show draggable area on window", | 4983 | "defaultMessage": "!!!Show draggable area on window", |
4945 | "end": { | 4984 | "end": { |
4946 | "column": 3, | 4985 | "column": 3, |
4947 | "line": 156 | 4986 | "line": 157 |
4948 | }, | 4987 | }, |
4949 | "file": "src/containers/settings/EditSettingsScreen.js", | 4988 | "file": "src/containers/settings/EditSettingsScreen.js", |
4950 | "id": "settings.app.form.showDragArea", | 4989 | "id": "settings.app.form.showDragArea", |
4951 | "start": { | 4990 | "start": { |
4952 | "column": 16, | 4991 | "column": 16, |
4953 | "line": 153 | 4992 | "line": 154 |
4954 | } | 4993 | } |
4955 | }, | 4994 | }, |
4956 | { | 4995 | { |
4957 | "defaultMessage": "!!!Enable spell checking", | 4996 | "defaultMessage": "!!!Enable spell checking", |
4958 | "end": { | 4997 | "end": { |
4959 | "column": 3, | 4998 | "column": 3, |
4960 | "line": 160 | 4999 | "line": 161 |
4961 | }, | 5000 | }, |
4962 | "file": "src/containers/settings/EditSettingsScreen.js", | 5001 | "file": "src/containers/settings/EditSettingsScreen.js", |
4963 | "id": "settings.app.form.enableSpellchecking", | 5002 | "id": "settings.app.form.enableSpellchecking", |
4964 | "start": { | 5003 | "start": { |
4965 | "column": 23, | 5004 | "column": 23, |
4966 | "line": 157 | 5005 | "line": 158 |
4967 | } | 5006 | } |
4968 | }, | 5007 | }, |
4969 | { | 5008 | { |
4970 | "defaultMessage": "!!!Enable GPU Acceleration", | 5009 | "defaultMessage": "!!!Enable GPU Acceleration", |
4971 | "end": { | 5010 | "end": { |
4972 | "column": 3, | 5011 | "column": 3, |
4973 | "line": 164 | 5012 | "line": 165 |
4974 | }, | 5013 | }, |
4975 | "file": "src/containers/settings/EditSettingsScreen.js", | 5014 | "file": "src/containers/settings/EditSettingsScreen.js", |
4976 | "id": "settings.app.form.enableGPUAcceleration", | 5015 | "id": "settings.app.form.enableGPUAcceleration", |
4977 | "start": { | 5016 | "start": { |
4978 | "column": 25, | 5017 | "column": 25, |
4979 | "line": 161 | 5018 | "line": 162 |
4980 | } | 5019 | } |
4981 | }, | 5020 | }, |
4982 | { | 5021 | { |
4983 | "defaultMessage": "!!!Include beta versions", | 5022 | "defaultMessage": "!!!Include beta versions", |
4984 | "end": { | 5023 | "end": { |
4985 | "column": 3, | 5024 | "column": 3, |
4986 | "line": 168 | 5025 | "line": 169 |
4987 | }, | 5026 | }, |
4988 | "file": "src/containers/settings/EditSettingsScreen.js", | 5027 | "file": "src/containers/settings/EditSettingsScreen.js", |
4989 | "id": "settings.app.form.beta", | 5028 | "id": "settings.app.form.beta", |
4990 | "start": { | 5029 | "start": { |
4991 | "column": 8, | 5030 | "column": 8, |
4992 | "line": 165 | 5031 | "line": 166 |
4993 | } | 5032 | } |
4994 | }, | 5033 | }, |
4995 | { | 5034 | { |
4996 | "defaultMessage": "!!!Enable updates", | 5035 | "defaultMessage": "!!!Enable updates", |
4997 | "end": { | 5036 | "end": { |
4998 | "column": 3, | 5037 | "column": 3, |
4999 | "line": 172 | 5038 | "line": 173 |
5000 | }, | 5039 | }, |
5001 | "file": "src/containers/settings/EditSettingsScreen.js", | 5040 | "file": "src/containers/settings/EditSettingsScreen.js", |
5002 | "id": "settings.app.form.automaticUpdates", | 5041 | "id": "settings.app.form.automaticUpdates", |
5003 | "start": { | 5042 | "start": { |
5004 | "column": 20, | 5043 | "column": 20, |
5005 | "line": 169 | 5044 | "line": 170 |
5006 | } | 5045 | } |
5007 | }, | 5046 | }, |
5008 | { | 5047 | { |
5009 | "defaultMessage": "!!!Enable Franz Todos", | 5048 | "defaultMessage": "!!!Enable Franz Todos", |
5010 | "end": { | 5049 | "end": { |
5011 | "column": 3, | 5050 | "column": 3, |
5012 | "line": 176 | 5051 | "line": 177 |
5013 | }, | 5052 | }, |
5014 | "file": "src/containers/settings/EditSettingsScreen.js", | 5053 | "file": "src/containers/settings/EditSettingsScreen.js", |
5015 | "id": "settings.app.form.enableTodos", | 5054 | "id": "settings.app.form.enableTodos", |
5016 | "start": { | 5055 | "start": { |
5017 | "column": 15, | 5056 | "column": 15, |
5018 | "line": 173 | 5057 | "line": 174 |
5019 | } | 5058 | } |
5020 | }, | 5059 | }, |
5021 | { | 5060 | { |
5022 | "defaultMessage": "!!!Keep all workspaces loaded", | 5061 | "defaultMessage": "!!!Keep all workspaces loaded", |
5023 | "end": { | 5062 | "end": { |
5024 | "column": 3, | 5063 | "column": 3, |
5025 | "line": 180 | 5064 | "line": 181 |
5026 | }, | 5065 | }, |
5027 | "file": "src/containers/settings/EditSettingsScreen.js", | 5066 | "file": "src/containers/settings/EditSettingsScreen.js", |
5028 | "id": "settings.app.form.keepAllWorkspacesLoaded", | 5067 | "id": "settings.app.form.keepAllWorkspacesLoaded", |
5029 | "start": { | 5068 | "start": { |
5030 | "column": 27, | 5069 | "column": 27, |
5031 | "line": 177 | 5070 | "line": 178 |
5032 | } | 5071 | } |
5033 | } | 5072 | } |
5034 | ], | 5073 | ], |
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index 88fe5a81d..b7fe119aa 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -1,21 +1,24 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "ΕπαναφόÏτωση", | 2 | "app.errorHandler.action": "ΕπαναφόÏτωση", |
3 | "app.errorHandler.headline": "Κάτι δεν λειτουÏγεί", | 3 | "app.errorHandler.headline": "Κάτι δεν λειτουÏγεί", |
4 | "changeserver.customServerLabel": "Î ÏοσαÏμοσμÎνος διακομιστής", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Διακομιστής", |
6 | "changeserver.submit": "Υποβολή", | 7 | "changeserver.submit": "Υποβολή", |
8 | "changeserver.urlError": "Εισάγετε μια ÎγκυÏη διεÏθυνση URL", | ||
9 | "changeserver.warning": "Οι επιπλÎον Ïυθμίσεις από το Ferdi δεν θα αποθηκευτοÏν", | ||
7 | "connectionLostBanner.cta": "ΑνανÎωση ΥπηÏεσίας", | 10 | "connectionLostBanner.cta": "ΑνανÎωση ΥπηÏεσίας", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "Τι συνÎβη;", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Ωχ όχι! Ο Ferdi Îχασε την επικοινωνία με το", |
10 | "feature.announcements.changelog.headline": "Changes in Ferdi {version}", | 13 | "feature.announcements.changelog.headline": "ΑλλαγÎÏ‚ σχετικά με το Ferdi", |
11 | "feature.debugger.title": "Publish debugging information", | 14 | "feature.debugger.title": "ΕγγÏαφή πληÏοφοÏιών ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½", |
12 | "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting", | 15 | "feature.delayApp.headline": "ΠαÏακαλοÏμε αγοÏάστε μία άδεια Ferdi για να παÏαλείψετε την αναμονή", |
13 | "feature.delayApp.text": "Ferdi θα συνεχίσει σε {seconds} δευτεÏόλεπτα.", | 16 | "feature.delayApp.text": "Ferdi θα συνεχίσει σε {seconds} δευτεÏόλεπτα.", |
14 | "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", | 17 | "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", |
15 | "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial", | 18 | "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial", |
16 | "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", | 19 | "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", |
17 | "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", | 20 | "feature.delayApp.upgrade.action": "ΑγοÏάστε μία άδεια Ferdi", |
18 | "feature.delayApp.upgrade.actionShort": "Upgrade account", | 21 | "feature.delayApp.upgrade.actionShort": "Αναβαθμίστε τον λογαÏιασμό σας ", |
19 | "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", | 22 | "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", |
20 | "feature.planSelection.cta.stayOnFree": "Stay on Free", | 23 | "feature.planSelection.cta.stayOnFree": "Stay on Free", |
21 | "feature.planSelection.cta.trial": "Start my free 14-days Trial", | 24 | "feature.planSelection.cta.trial": "Start my free 14-days Trial", |
@@ -182,7 +185,7 @@ | |||
182 | "password.noUser": "Δεν βÏÎθηκε χÏήστης με τη συγκεκÏιμÎνη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", | 185 | "password.noUser": "Δεν βÏÎθηκε χÏήστης με τη συγκεκÏιμÎνη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", |
183 | "password.submit.label": "Υποβολή", | 186 | "password.submit.label": "Υποβολή", |
184 | "password.successInfo": "ΕλÎγξτε το email σας", | 187 | "password.successInfo": "ΕλÎγξτε το email σας", |
185 | "premiumFeature.button.upgradeAccount": "Upgrade account", | 188 | "premiumFeature.button.upgradeAccount": "Αναβαθμίστε τον λογαÏιασμό σας ", |
186 | "pricing.features.accountSync": "Account Synchronisation", | 189 | "pricing.features.accountSync": "Account Synchronisation", |
187 | "pricing.features.adFree": "Forever ad-free", | 190 | "pricing.features.adFree": "Forever ad-free", |
188 | "pricing.features.appDelays": "No Waiting Screens", | 191 | "pricing.features.appDelays": "No Waiting Screens", |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 5c33daf86..dcaa2466a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index a8518b5e3..03207e904 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Volver a cargar", | 2 | "app.errorHandler.action": "Recargar", |
3 | "app.errorHandler.headline": "Algo salió mal.", | 3 | "app.errorHandler.headline": "Algo salió mal.", |
4 | "changeserver.customServerLabel": "Servidor personalizado", | ||
4 | "changeserver.headline": "Cambiar servidor", | 5 | "changeserver.headline": "Cambiar servidor", |
5 | "changeserver.label": "Servidor", | 6 | "changeserver.label": "Servidor", |
6 | "changeserver.submit": "Enviar", | 7 | "changeserver.submit": "Enviar", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Recargar Servicio", | 10 | "connectionLostBanner.cta": "Recargar Servicio", |
8 | "connectionLostBanner.informationLink": "¿Qué ocurrió?", | 11 | "connectionLostBanner.informationLink": "¿Qué ocurrió?", |
9 | "connectionLostBanner.message": "¡Oh no! Ferdi perdió la conexión con {name}.", | 12 | "connectionLostBanner.message": "¡Oh no! Ferdi perdió la conexión con {name}.", |
@@ -276,7 +279,7 @@ | |||
276 | "settings.app.buttonInstallUpdate": "Reiniciar e instalar actualización", | 279 | "settings.app.buttonInstallUpdate": "Reiniciar e instalar actualización", |
277 | "settings.app.buttonSearchForUpdate": "Comprobar actualizaciones", | 280 | "settings.app.buttonSearchForUpdate": "Comprobar actualizaciones", |
278 | "settings.app.cacheInfo": "El cache de Ferdi actualmente usa {size} de espacio en disco.", | 281 | "settings.app.cacheInfo": "El cache de Ferdi actualmente usa {size} de espacio en disco.", |
279 | "settings.app.cacheNotCleared": "Couldn't clear all cache", | 282 | "settings.app.cacheNotCleared": "No se ha podido eliminar el cache", |
280 | "settings.app.currentVersion": "Versión actual:", | 283 | "settings.app.currentVersion": "Versión actual:", |
281 | "settings.app.form.accentColor": "Color de realce", | 284 | "settings.app.form.accentColor": "Color de realce", |
282 | "settings.app.form.adaptableDarkMode": "Sincroniza el modo oscuro con el ajuste del modo oscuro de mi Sistema Operativo", | 285 | "settings.app.form.adaptableDarkMode": "Sincroniza el modo oscuro con el ajuste del modo oscuro de mi Sistema Operativo", |
@@ -292,7 +295,7 @@ | |||
292 | "settings.app.form.enableSystemTray": "Mostrar Ferdi en la bandeja del sistema", | 295 | "settings.app.form.enableSystemTray": "Mostrar Ferdi en la bandeja del sistema", |
293 | "settings.app.form.enableTodos": "Activar Ferdi Todos", | 296 | "settings.app.form.enableTodos": "Activar Ferdi Todos", |
294 | "settings.app.form.hibernate": "Habilitar hibernación del servicio", | 297 | "settings.app.form.hibernate": "Habilitar hibernación del servicio", |
295 | "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", | 298 | "settings.app.form.hibernateOnStartup": "Mantener los servicios en hibernación al iniciar", |
296 | "settings.app.form.hibernationStrategy": "Estrategia de hibernación", | 299 | "settings.app.form.hibernationStrategy": "Estrategia de hibernación", |
297 | "settings.app.form.iconSize": "Tamaño del icono del servicio", | 300 | "settings.app.form.iconSize": "Tamaño del icono del servicio", |
298 | "settings.app.form.inactivityLock": "Bloquear tras inactividad", | 301 | "settings.app.form.inactivityLock": "Bloquear tras inactividad", |
@@ -371,9 +374,9 @@ | |||
371 | "settings.service.form.customUrlPremiumInfo": "Para añadir tus propios servicios, necesitas una Cuenta Colaborador Premium de Ferdi.", | 374 | "settings.service.form.customUrlPremiumInfo": "Para añadir tus propios servicios, necesitas una Cuenta Colaborador Premium de Ferdi.", |
372 | "settings.service.form.customUrlUpgradeAccount": "Mejora tu cuenta", | 375 | "settings.service.form.customUrlUpgradeAccount": "Mejora tu cuenta", |
373 | "settings.service.form.customUrlValidationError": "No se pudo validar el servidor personalizado {name}.", | 376 | "settings.service.form.customUrlValidationError": "No se pudo validar el servidor personalizado {name}.", |
374 | "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", | 377 | "settings.service.form.darkReaderBrightness": "Brillo del Lector Oscuro", |
375 | "settings.service.form.darkReaderContrast": "Dark Reader Contrast", | 378 | "settings.service.form.darkReaderContrast": "Contraste del Lector Oscuro", |
376 | "settings.service.form.darkReaderSepia": "Dark Reader Sepia", | 379 | "settings.service.form.darkReaderSepia": "Lector Oscuro Sepia", |
377 | "settings.service.form.deleteButton": "Eliminar servicio", | 380 | "settings.service.form.deleteButton": "Eliminar servicio", |
378 | "settings.service.form.disableHibernation": "Desactivar hibernación", | 381 | "settings.service.form.disableHibernation": "Desactivar hibernación", |
379 | "settings.service.form.disableHibernationInfo": "Actualmente tienes la hibernación habilitada, pero puedes desactivar la hibernación para servicios individuales usando esta opción.", | 382 | "settings.service.form.disableHibernationInfo": "Actualmente tienes la hibernación habilitada, pero puedes desactivar la hibernación para servicios individuales usando esta opción.", |
@@ -384,7 +387,7 @@ | |||
384 | "settings.service.form.enableNotification": "Activar notificaciones", | 387 | "settings.service.form.enableNotification": "Activar notificaciones", |
385 | "settings.service.form.enableService": "Activar servicio", | 388 | "settings.service.form.enableService": "Activar servicio", |
386 | "settings.service.form.headlineBadges": "Insignias de mensaje no leÃdos", | 389 | "settings.service.form.headlineBadges": "Insignias de mensaje no leÃdos", |
387 | "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", | 390 | "settings.service.form.headlineDarkReaderSettings": "Configuración del Lector Oscuro", |
388 | "settings.service.form.headlineGeneral": "General", | 391 | "settings.service.form.headlineGeneral": "General", |
389 | "settings.service.form.headlineNotifications": "Notificaciones", | 392 | "settings.service.form.headlineNotifications": "Notificaciones", |
390 | "settings.service.form.icon": "Icono Personalizado", | 393 | "settings.service.form.icon": "Icono Personalizado", |
@@ -447,8 +450,8 @@ | |||
447 | "settings.workspace.add.form.submitButton": "Crear un sitio de trabajo", | 450 | "settings.workspace.add.form.submitButton": "Crear un sitio de trabajo", |
448 | "settings.workspace.form.buttonDelete": "Eliminar espacio de trabajo", | 451 | "settings.workspace.form.buttonDelete": "Eliminar espacio de trabajo", |
449 | "settings.workspace.form.buttonSave": "Guardar espacio de trabajo", | 452 | "settings.workspace.form.buttonSave": "Guardar espacio de trabajo", |
450 | "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", | 453 | "settings.workspace.form.keepLoaded": "Mantener este espacio de trabajo cargado*", |
451 | "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", | 454 | "settings.workspace.form.keepLoadedInfo": "*Esta opción será sobrescrita por la opción global \"Mantener todas las áreas de trabajo cargadas\".", |
452 | "settings.workspace.form.name": "Nombre", | 455 | "settings.workspace.form.name": "Nombre", |
453 | "settings.workspace.form.servicesInWorkspaceHeadline": "Servicios en este espacio de trabajo", | 456 | "settings.workspace.form.servicesInWorkspaceHeadline": "Servicios en este espacio de trabajo", |
454 | "settings.workspace.form.yourWorkspaces": "Tus espacios de trabajo", | 457 | "settings.workspace.form.yourWorkspaces": "Tus espacios de trabajo", |
@@ -458,10 +461,10 @@ | |||
458 | "settings.workspaces.tryReloadWorkspaces": "Intentar de nuevo", | 461 | "settings.workspaces.tryReloadWorkspaces": "Intentar de nuevo", |
459 | "settings.workspaces.updatedInfo": "Tus cambios han sido guardados", | 462 | "settings.workspaces.updatedInfo": "Tus cambios han sido guardados", |
460 | "settings.workspaces.workspaceFeatureHeadline": "Menos es más: Presentación de Ferdi Workspaces", | 463 | "settings.workspaces.workspaceFeatureHeadline": "Menos es más: Presentación de Ferdi Workspaces", |
461 | "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 464 | "settings.workspaces.workspaceFeatureInfo": "Los espacios de trabajo Ferdi permiten centrarse en lo que es importante. Configure diferentes conjuntos de servicios y cambie fácilmente entre ellos en cualquier momento. Usted decide qué servicios necesita, cuándo y dónde, para que podamos ayudarte a mantenerte al tanto - o apartarte fácilmente del trabajo cuando asi lo desees.", |
462 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", | 465 | "settings.workspaces.workspacesRequestFailed": "No se han podido cargar sus áreas de trabajo", |
463 | "sidebar.addNewService": "Añadir nuevo servicio", | 466 | "sidebar.addNewService": "Añadir nuevo servicio", |
464 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | 467 | "sidebar.closeTodosDrawer": "Cerrar Ferdi Todos", |
465 | "sidebar.closeWorkspaceDrawer": "Cerrar cajón de espacio de trabajo", | 468 | "sidebar.closeWorkspaceDrawer": "Cerrar cajón de espacio de trabajo", |
466 | "sidebar.lockFerdi": "Bloquear Ferdi", | 469 | "sidebar.lockFerdi": "Bloquear Ferdi", |
467 | "sidebar.muteApp": "Desactivar notificaciones y sonido", | 470 | "sidebar.muteApp": "Desactivar notificaciones y sonido", |
@@ -482,15 +485,15 @@ | |||
482 | "signup.submit.label": "Crear cuenta", | 485 | "signup.submit.label": "Crear cuenta", |
483 | "subscription.bestValue": "Best value", | 486 | "subscription.bestValue": "Best value", |
484 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", | 487 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", |
485 | "subscription.cta.allOptions": "See all options", | 488 | "subscription.cta.allOptions": "Ver todas las opciones", |
486 | "subscription.cta.choosePlan": "Choose your plan", | 489 | "subscription.cta.choosePlan": "Elije tu plan", |
487 | "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", | 490 | "subscription.includedProFeatures": "El Plan Profesional de Ferdi incluye:", |
488 | "subscription.interval.per": "per {interval}", | 491 | "subscription.interval.per": "por {interval}", |
489 | "subscription.interval.perMonth": "per month", | 492 | "subscription.interval.perMonth": "al mes", |
490 | "subscription.interval.perMonthPerUser": "per month & user", | 493 | "subscription.interval.perMonthPerUser": "por mes y usuario", |
491 | "subscription.planItem.upgradeAccount": "Actualizar cuenta", | 494 | "subscription.planItem.upgradeAccount": "Actualizar cuenta", |
492 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", | 495 | "subscription.teaser.includedFeatures": "Los planes de pago de Ferdi incluyen:", |
493 | "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | 496 | "subscription.teaser.intro": "Ferdi 5 viene con una amplia gama de nuevas caracterÃsticas para mejorar tu comunicación diaria - baterÃas incluidas. ¡Echa un vistazo a nuestros nuevos planes y descubra cuál le conviene más!", |
494 | "subscriptionPopup.buttonCancel": "Cancelar", | 497 | "subscriptionPopup.buttonCancel": "Cancelar", |
495 | "subscriptionPopup.buttonDone": "Listo", | 498 | "subscriptionPopup.buttonDone": "Listo", |
496 | "tabs.item.deleteService": "Eliminar servicio", | 499 | "tabs.item.deleteService": "Eliminar servicio", |
@@ -501,7 +504,7 @@ | |||
501 | "tabs.item.enableAudio": "Habilitar audio", | 504 | "tabs.item.enableAudio": "Habilitar audio", |
502 | "tabs.item.enableNotification": "Activar notificaciones", | 505 | "tabs.item.enableNotification": "Activar notificaciones", |
503 | "tabs.item.enableService": "Activar servicio", | 506 | "tabs.item.enableService": "Activar servicio", |
504 | "tabs.item.reload": "Volver a cargar", | 507 | "tabs.item.reload": "Recargar", |
505 | "validation.email": "{field} no es válido", | 508 | "validation.email": "{field} no es válido", |
506 | "validation.minLength": "{field} deberÃa tener al menos {length} caracteres", | 509 | "validation.minLength": "{field} deberÃa tener al menos {length} caracteres", |
507 | "validation.oneRequired": "Al menos uno es requerido", | 510 | "validation.oneRequired": "Al menos uno es requerido", |
@@ -510,19 +513,19 @@ | |||
510 | "webControls.back": "Volver", | 513 | "webControls.back": "Volver", |
511 | "webControls.forward": "Siguiente", | 514 | "webControls.forward": "Siguiente", |
512 | "webControls.goHome": "Inicio", | 515 | "webControls.goHome": "Inicio", |
513 | "webControls.openInBrowser": "Open in Browser", | 516 | "webControls.openInBrowser": "Abrir en navegador", |
514 | "webControls.reload": "Volver a cargar", | 517 | "webControls.reload": "Recargar", |
515 | "welcome.loginButton": "Accede a tu cuenta", | 518 | "welcome.loginButton": "Accede a tu cuenta", |
516 | "welcome.signupButton": "Crear una cuenta gratuita", | 519 | "welcome.signupButton": "Crear una cuenta gratuita", |
517 | "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", | 520 | "workspaceDrawer.addNewWorkspaceLabel": "Añadir nuevo espacio de trabajo", |
518 | "workspaceDrawer.allServices": "Todos los servicios", | 521 | "workspaceDrawer.allServices": "Todos los servicios", |
519 | "workspaceDrawer.headline": "Espacios de trabajo", | 522 | "workspaceDrawer.headline": "Espacios de trabajo", |
520 | "workspaceDrawer.item.contextMenuEdit": "edit", | 523 | "workspaceDrawer.item.contextMenuEdit": "editar", |
521 | "workspaceDrawer.item.noServicesAddedYet": "No services added yet", | 524 | "workspaceDrawer.item.noServicesAddedYet": "Ningún servicio ha sido añadido", |
522 | "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", | 525 | "workspaceDrawer.premiumCtaButtonLabel": "Crea tu primer área de trabajo", |
523 | "workspaceDrawer.proFeatureBadge": "Premium feature", | 526 | "workspaceDrawer.proFeatureBadge": "Función Premium", |
524 | "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", | 527 | "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivar cuenta premium", |
525 | "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", | 528 | "workspaceDrawer.workspaceFeatureInfo": "<p>Los espacios de trabajo Ferdi permiten centrarse en lo que es importante. Configure diferentes conjuntos de servicios y cambie fácilmente entre ellos en cualquier momento. </p><p>Usted decide qué servicios necesita, cuándo y dónde, para que podamos ayudarte a mantenerte al tanto - o apartarte fácilmente del trabajo cuando asi lo desees.</p>", |
526 | "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", | 529 | "workspaceDrawer.workspacesSettingsTooltip": "Editar ajustes de áreas de trabajo", |
527 | "workspaces.switchingIndicator.switchingTo": "Switching to" | 530 | "workspaces.switchingIndicator.switchingTo": "Cambiando a" |
528 | } | 531 | } |
diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index c898f47f2..78c08558e 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Actualiser", | 2 | "app.errorHandler.action": "Actualiser", |
3 | "app.errorHandler.headline": "On dirait que quelque chose ne va pas", | 3 | "app.errorHandler.headline": "On dirait que quelque chose ne va pas", |
4 | "changeserver.customServerLabel": "Serveur personnalisé", | ||
4 | "changeserver.headline": "Changer de serveur", | 5 | "changeserver.headline": "Changer de serveur", |
5 | "changeserver.label": "Serveur", | 6 | "changeserver.label": "Serveur", |
6 | "changeserver.submit": "Soumettre", | 7 | "changeserver.submit": "Soumettre", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Redémarrer le service", | 10 | "connectionLostBanner.cta": "Redémarrer le service", |
8 | "connectionLostBanner.informationLink": "Que s'est-il passé?", | 11 | "connectionLostBanner.informationLink": "Que s'est-il passé?", |
9 | "connectionLostBanner.message": "Oh non ! Ferdi a perdu la connexion avec {name}.", | 12 | "connectionLostBanner.message": "Oh non ! Ferdi a perdu la connexion avec {name}.", |
@@ -276,7 +279,7 @@ | |||
276 | "settings.app.buttonInstallUpdate": "Redémarrer et installer la mise à jour", | 279 | "settings.app.buttonInstallUpdate": "Redémarrer et installer la mise à jour", |
277 | "settings.app.buttonSearchForUpdate": "Vérifier les mises à jour", | 280 | "settings.app.buttonSearchForUpdate": "Vérifier les mises à jour", |
278 | "settings.app.cacheInfo": "Le cache de Ferdi occupe actuellement {size} en espace disque.", | 281 | "settings.app.cacheInfo": "Le cache de Ferdi occupe actuellement {size} en espace disque.", |
279 | "settings.app.cacheNotCleared": "Couldn't clear all cache", | 282 | "settings.app.cacheNotCleared": "Impossible de vider toute la cache", |
280 | "settings.app.currentVersion": "Version actuelle :", | 283 | "settings.app.currentVersion": "Version actuelle :", |
281 | "settings.app.form.accentColor": "Couleur d'accentuation", | 284 | "settings.app.form.accentColor": "Couleur d'accentuation", |
282 | "settings.app.form.adaptableDarkMode": "Synchroniser le mode sombre avec l'option mode sombre du système", | 285 | "settings.app.form.adaptableDarkMode": "Synchroniser le mode sombre avec l'option mode sombre du système", |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index d930ab415..a937b084e 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Athlódáil", | 2 | "app.errorHandler.action": "Athlódáil", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Freastalaà saincheaptha", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Cuir isteach", | 7 | "changeserver.submit": "Cuir isteach", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Athlódáil seirbhÃs", | 10 | "connectionLostBanner.cta": "Athlódáil seirbhÃs", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/he.json +++ b/src/i18n/locales/he.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 79616f9f5..99916d529 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Ponovno uÄitavanje", | 2 | "app.errorHandler.action": "Ponovno uÄitavanje", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Prilagođen server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Pošalji", | 7 | "changeserver.submit": "Pošalji", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 07603df52..0c27f706d 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -1,14 +1,17 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Újratöltés", | 2 | "app.errorHandler.action": "Újratöltés", |
3 | "app.errorHandler.headline": "Valami nem jött össze", | 3 | "app.errorHandler.headline": "Valami nem jött össze", |
4 | "changeserver.customServerLabel": "Egyéni szerver", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Szerver", |
6 | "changeserver.submit": "Küldés", | 7 | "changeserver.submit": "Küldés", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Szolgáltatás újraindÃtása", | 10 | "connectionLostBanner.cta": "Szolgáltatás újraindÃtása", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "Mi történt?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Ja ne! Ferdi nem tud kapcsolodni {name}-hez.", |
10 | "feature.announcements.changelog.headline": "Ferdi {version} változásai", | 13 | "feature.announcements.changelog.headline": "Ferdi {version} változásai", |
11 | "feature.debugger.title": "Publish debugging information", | 14 | "feature.debugger.title": "Hibakeresési napló publikálása", |
12 | "feature.delayApp.headline": "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", | 15 | "feature.delayApp.headline": "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", |
13 | "feature.delayApp.text": "A Ferdi továbblép {seconds} másodperc múlva.", | 16 | "feature.delayApp.text": "A Ferdi továbblép {seconds} másodperc múlva.", |
14 | "feature.delayApp.trial.action": "Igen, szeretném kipróbálni 14 napig a Ferdi Professional-t ingyen", | 17 | "feature.delayApp.trial.action": "Igen, szeretném kipróbálni 14 napig a Ferdi Professional-t ingyen", |
@@ -32,15 +35,15 @@ | |||
32 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 35 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", |
33 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | 36 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", |
34 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 37 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", |
35 | "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", | 38 | "feature.publishDebugInfo.error": "Hiba történt a hibakeresési napló publikálása közben. Kérem próbálja meg később.", |
36 | "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", | 39 | "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", |
37 | "feature.publishDebugInfo.privacy": "Privacy policy", | 40 | "feature.publishDebugInfo.privacy": "Adatvédelmi szabályzat", |
38 | "feature.publishDebugInfo.publish": "Accept and publish", | 41 | "feature.publishDebugInfo.publish": "Elfogadás és közzététel", |
39 | "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", | 42 | "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", |
40 | "feature.publishDebugInfo.terms": "Felhasználási Feltételeket", | 43 | "feature.publishDebugInfo.terms": "Felhasználási Feltételeket", |
41 | "feature.publishDebugInfo.title": "Publish debug information", | 44 | "feature.publishDebugInfo.title": "Hibakeresési napló publikálása", |
42 | "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", | 45 | "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", |
43 | "feature.quickSwitch.search": "Search...", | 46 | "feature.quickSwitch.search": "Keresés...", |
44 | "feature.quickSwitch.title": "QuickSwitch", | 47 | "feature.quickSwitch.title": "QuickSwitch", |
45 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | 48 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", |
46 | "feature.shareFranz.action.email": "Küldés email-ben", | 49 | "feature.shareFranz.action.email": "Küldés email-ben", |
@@ -86,14 +89,14 @@ | |||
86 | "invite.skip.label": "Későbbre halasztom", | 89 | "invite.skip.label": "Későbbre halasztom", |
87 | "invite.submit.label": "MeghÃvók küldése", | 90 | "invite.submit.label": "MeghÃvók küldése", |
88 | "invite.successInfo": "MeghÃvás sikeresen elküldve", | 91 | "invite.successInfo": "MeghÃvás sikeresen elküldve", |
89 | "locked.headline": "Locked", | 92 | "locked.headline": "Zárolva", |
90 | "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | 93 | "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", |
91 | "locked.invalidCredentials": "Password invalid", | 94 | "locked.invalidCredentials": "Password invalid", |
92 | "locked.password.label": "Password", | 95 | "locked.password.label": "Password", |
93 | "locked.submit.label": "Unlock", | 96 | "locked.submit.label": "Feloldás", |
94 | "locked.touchId": "Unlock with Touch ID", | 97 | "locked.touchId": "Feloldás ujjlenyomattal", |
95 | "locked.touchIdPrompt": "unlock via Touch ID", | 98 | "locked.touchIdPrompt": "feloldás ujjlenyomattal", |
96 | "locked.unlockWithPassword": "Unlock with Password", | 99 | "locked.unlockWithPassword": "Feloldás jelszóval", |
97 | "login.changeServer": "Change server", | 100 | "login.changeServer": "Change server", |
98 | "login.customServerQuestion": "Using a custom Ferdi server?", | 101 | "login.customServerQuestion": "Using a custom Ferdi server?", |
99 | "login.customServerSuggestion": "Try importing your Franz account", | 102 | "login.customServerSuggestion": "Try importing your Franz account", |
@@ -151,10 +154,10 @@ | |||
151 | "menu.todos": "Tennivalók", | 154 | "menu.todos": "Tennivalók", |
152 | "menu.todos.enableTodos": "Enable Todos", | 155 | "menu.todos.enableTodos": "Enable Todos", |
153 | "menu.view": "Nézet", | 156 | "menu.view": "Nézet", |
154 | "menu.view.back": "Back", | 157 | "menu.view.back": "Vissza", |
155 | "menu.view.enterFullScreen": "Kilépés a teljes képernyős módból", | 158 | "menu.view.enterFullScreen": "Kilépés a teljes képernyős módból", |
156 | "menu.view.exitFullScreen": "Kilépés a teljes képernyős módból", | 159 | "menu.view.exitFullScreen": "Kilépés a teljes képernyős módból", |
157 | "menu.view.forward": "Forward", | 160 | "menu.view.forward": "Előre", |
158 | "menu.view.lockFerdi": "Lock Ferdi", | 161 | "menu.view.lockFerdi": "Lock Ferdi", |
159 | "menu.view.openQuickSwitch": "Open Quick Switch", | 162 | "menu.view.openQuickSwitch": "Open Quick Switch", |
160 | "menu.view.reloadFranz": "Ferdi újrainditása", | 163 | "menu.view.reloadFranz": "Ferdi újrainditása", |
@@ -200,7 +203,7 @@ | |||
200 | "pricing.features.upToThreeServices": "Add up to 3 services", | 203 | "pricing.features.upToThreeServices": "Add up to 3 services", |
201 | "pricing.features.workspaces": "Munkaterületek", | 204 | "pricing.features.workspaces": "Munkaterületek", |
202 | "pricing.plan.free": "Ingyenes Ferdi", | 205 | "pricing.plan.free": "Ingyenes Ferdi", |
203 | "pricing.plan.legacy": "Ferdi Premium", | 206 | "pricing.plan.legacy": "Ferdi Prémium", |
204 | "pricing.plan.personal": "Ferdi Personal", | 207 | "pricing.plan.personal": "Ferdi Personal", |
205 | "pricing.plan.personal-monthly": "Ferdi Personal Monthly", | 208 | "pricing.plan.personal-monthly": "Ferdi Personal Monthly", |
206 | "pricing.plan.personal-yearly": "Ferdi Personal Yearly", | 209 | "pricing.plan.personal-yearly": "Ferdi Personal Yearly", |
@@ -507,8 +510,8 @@ | |||
507 | "validation.oneRequired": "Legalább egy kitöltése szükséges", | 510 | "validation.oneRequired": "Legalább egy kitöltése szükséges", |
508 | "validation.required": "{field} kitöltése kötelező", | 511 | "validation.required": "{field} kitöltése kötelező", |
509 | "validation.url": "{field} nem érvényes URL", | 512 | "validation.url": "{field} nem érvényes URL", |
510 | "webControls.back": "Back", | 513 | "webControls.back": "Vissza", |
511 | "webControls.forward": "Forward", | 514 | "webControls.forward": "Előre", |
512 | "webControls.goHome": "Home", | 515 | "webControls.goHome": "Home", |
513 | "webControls.openInBrowser": "Open in Browser", | 516 | "webControls.openInBrowser": "Open in Browser", |
514 | "webControls.reload": "Újratöltés", | 517 | "webControls.reload": "Újratöltés", |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 433fde229..566139d1f 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Muat Ulang", | 2 | "app.errorHandler.action": "Muat Ulang", |
3 | "app.errorHandler.headline": "Terjadi kesalahan", | 3 | "app.errorHandler.headline": "Terjadi kesalahan", |
4 | "changeserver.customServerLabel": "Server khusus", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Kirim", | 7 | "changeserver.submit": "Kirim", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Muat ulang Layanan", | 10 | "connectionLostBanner.cta": "Muat ulang Layanan", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 78474b496..ac9d410e0 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -1,14 +1,17 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Ricarica", | 2 | "app.errorHandler.action": "Ricarica", |
3 | "app.errorHandler.headline": "Qualcosa è andato storto", | 3 | "app.errorHandler.headline": "Qualcosa è andato storto", |
4 | "changeserver.customServerLabel": "Server personalizzato", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Invia", | 7 | "changeserver.submit": "Invia", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Ricarica Servizio", | 10 | "connectionLostBanner.cta": "Ricarica Servizio", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "Cos'è successo?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi ha perso la connessione con {name}.", |
10 | "feature.announcements.changelog.headline": "Modifiche in Ferdi {Version}", | 13 | "feature.announcements.changelog.headline": "Modifiche in Ferdi {Version}", |
11 | "feature.debugger.title": "Publish debugging information", | 14 | "feature.debugger.title": "Pubblica informazioni di debug", |
12 | "feature.delayApp.headline": "Per favore, compra una Licenza Supporter di Ferdi per saltare l'attesa", | 15 | "feature.delayApp.headline": "Per favore, compra una Licenza Supporter di Ferdi per saltare l'attesa", |
13 | "feature.delayApp.text": "Ferdi continuerà tra {seconds} secondi.", | 16 | "feature.delayApp.text": "Ferdi continuerà tra {seconds} secondi.", |
14 | "feature.delayApp.trial.action": "Sì, voglio la prova gratuita di 14 giorni di Ferdi Professional", | 17 | "feature.delayApp.trial.action": "Sì, voglio la prova gratuita di 14 giorni di Ferdi Professional", |
@@ -32,10 +35,10 @@ | |||
32 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 35 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", |
33 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | 36 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", |
34 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 37 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", |
35 | "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", | 38 | "feature.publishDebugInfo.error": "Si è verificato un errore durante il tentativo di pubblicare le informazioni di debug. Riprova più tardi o vedi la console per maggiori informazioni.", |
36 | "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", | 39 | "feature.publishDebugInfo.info": "Pubblicare le informazioni di debug ci aiuta a trovare problemi ed errori in Ferdi. Pubblicando le informazioni di debug accetti l'informativa sulla privacy e i termini di servizio di Ferdi Debugger", |
37 | "feature.publishDebugInfo.privacy": "Privacy policy", | 40 | "feature.publishDebugInfo.privacy": "Informativa sulla privacy", |
38 | "feature.publishDebugInfo.publish": "Accept and publish", | 41 | "feature.publishDebugInfo.publish": "Accetta e pubblica", |
39 | "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", | 42 | "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", |
40 | "feature.publishDebugInfo.terms": "Termini di Servizio", | 43 | "feature.publishDebugInfo.terms": "Termini di Servizio", |
41 | "feature.publishDebugInfo.title": "Publish debug information", | 44 | "feature.publishDebugInfo.title": "Publish debug information", |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 3c8f938aa..4ca76c329 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "å†èªã¿è¾¼ã¿", | 2 | "app.errorHandler.action": "å†èªã¿è¾¼ã¿", |
3 | "app.errorHandler.headline": "é–“é•ãˆã¦ã„る部分ãŒã‚ã‚Šã¾ã™", | 3 | "app.errorHandler.headline": "é–“é•ãˆã¦ã„る部分ãŒã‚ã‚Šã¾ã™", |
4 | "changeserver.customServerLabel": "独自サーãƒãƒ¼", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "é€ä¿¡", | 7 | "changeserver.submit": "é€ä¿¡", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "サービスをリãƒãƒ¼ãƒ‰ã™ã‚‹", | 10 | "connectionLostBanner.cta": "サービスをリãƒãƒ¼ãƒ‰ã™ã‚‹", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 3768274ff..0422f6879 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", | 2 | "app.errorHandler.action": "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "კერძრსერვერი", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ ებáƒ", | 7 | "changeserver.submit": "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ ებáƒ", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index 462990547..36aae0dd6 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "ìƒˆë¡œê³ ì¹¨", | 2 | "app.errorHandler.action": "ìƒˆë¡œê³ ì¹¨", |
3 | "app.errorHandler.headline": "ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤.", | 3 | "app.errorHandler.headline": "ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤.", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index f166fd1c9..dcbd84636 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Herladen", | 2 | "app.errorHandler.action": "Herladen", |
3 | "app.errorHandler.headline": "Er ging iets mis", | 3 | "app.errorHandler.headline": "Er ging iets mis", |
4 | "changeserver.customServerLabel": "Aangepaste server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Verzenden", | 7 | "changeserver.submit": "Verzenden", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Service Herladen", | 10 | "connectionLostBanner.cta": "Service Herladen", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 3ac8186bd..9de45b28c 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Herladen", | 2 | "app.errorHandler.action": "Herladen", |
3 | "app.errorHandler.headline": "Er is iets mis gegaan", | 3 | "app.errorHandler.headline": "Er is iets mis gegaan", |
4 | "changeserver.customServerLabel": "Aangepaste server", | ||
4 | "changeserver.headline": "Server wijzigen", | 5 | "changeserver.headline": "Server wijzigen", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Verzenden", | 7 | "changeserver.submit": "Verzenden", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Een service opnieuw laden", | 10 | "connectionLostBanner.cta": "Een service opnieuw laden", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index f6193a1fd..7a28f7cac 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Odśwież", | 2 | "app.errorHandler.action": "Odśwież", |
3 | "app.errorHandler.headline": "Coś poszło nie tak.", | 3 | "app.errorHandler.headline": "Coś poszło nie tak.", |
4 | "changeserver.customServerLabel": "Spersonalizowany serwer", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Wyślij", | 7 | "changeserver.submit": "Wyślij", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Przeładuj usługę", | 10 | "connectionLostBanner.cta": "Przeładuj usługę", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 190ef31de..bce72e369 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Recarregar", | 2 | "app.errorHandler.action": "Recarregar", |
3 | "app.errorHandler.headline": "Algo deu errado", | 3 | "app.errorHandler.headline": "Algo deu errado", |
4 | "changeserver.customServerLabel": "Servidor personalizado", | ||
4 | "changeserver.headline": "Alterar servidor", | 5 | "changeserver.headline": "Alterar servidor", |
5 | "changeserver.label": "Servidor", | 6 | "changeserver.label": "Servidor", |
6 | "changeserver.submit": "Submeter", | 7 | "changeserver.submit": "Submeter", |
8 | "changeserver.urlError": "Informe uma URL válida", | ||
9 | "changeserver.warning": "As configurações extras oferecidas pelo Ferdi não serão salvas", | ||
7 | "connectionLostBanner.cta": "Recarregar serviço", | 10 | "connectionLostBanner.cta": "Recarregar serviço", |
8 | "connectionLostBanner.informationLink": "O que aconteceu?", | 11 | "connectionLostBanner.informationLink": "O que aconteceu?", |
9 | "connectionLostBanner.message": "Ah não! Ferdi perdeu a conexão com {name}.", | 12 | "connectionLostBanner.message": "Ah não! Ferdi perdeu a conexão com {name}.", |
@@ -186,7 +189,7 @@ | |||
186 | "pricing.features.accountSync": "Sincronização Automática", | 189 | "pricing.features.accountSync": "Sincronização Automática", |
187 | "pricing.features.adFree": "Sem publicidade para sempre", | 190 | "pricing.features.adFree": "Sem publicidade para sempre", |
188 | "pricing.features.appDelays": "Sem Telas de Espera", | 191 | "pricing.features.appDelays": "Sem Telas de Espera", |
189 | "pricing.features.appDelaysEnabled": "Occasional Waiting Screens", | 192 | "pricing.features.appDelaysEnabled": "Telas de Carregamento Ocasionais", |
190 | "pricing.features.customWebsites": "Adicionar Websites Personalizados", | 193 | "pricing.features.customWebsites": "Adicionar Websites Personalizados", |
191 | "pricing.features.desktopNotifications": "Notificações no ambiente de trabalho", | 194 | "pricing.features.desktopNotifications": "Notificações no ambiente de trabalho", |
192 | "pricing.features.onPremise": "On-Premise & Outros serviços hospedados", | 195 | "pricing.features.onPremise": "On-Premise & Outros serviços hospedados", |
@@ -328,7 +331,7 @@ | |||
328 | "settings.app.lockInfo": "O bloqueio por senha permite a você proteger suas mensagens.\nUsando o bloqueio por senha, será necessário informar sua senha toda veze que o Ferdi for iniciado ou você solicite o bloqueio.", | 331 | "settings.app.lockInfo": "O bloqueio por senha permite a você proteger suas mensagens.\nUsando o bloqueio por senha, será necessário informar sua senha toda veze que o Ferdi for iniciado ou você solicite o bloqueio.", |
329 | "settings.app.lockedPassword": "Senha", | 332 | "settings.app.lockedPassword": "Senha", |
330 | "settings.app.lockedPasswordInfo": "Tenha certeza que a senha definida será lembrada.\nCaso você esqueça a senha, será necessário reinstalar o Ferdi.", | 333 | "settings.app.lockedPasswordInfo": "Tenha certeza que a senha definida será lembrada.\nCaso você esqueça a senha, será necessário reinstalar o Ferdi.", |
331 | "settings.app.restartRequired": "Alterações requerem reinÃcio", | 334 | "settings.app.restartRequired": "Essa alteração requer uma reinicialização", |
332 | "settings.app.scheduledDNDInfo": "O modo Não perturbe agendado permite definir um perÃodo de tempo em que você não deseja receber notificações do Ferdi.", | 335 | "settings.app.scheduledDNDInfo": "O modo Não perturbe agendado permite definir um perÃodo de tempo em que você não deseja receber notificações do Ferdi.", |
333 | "settings.app.scheduledDNDTimeInfo": "Horários no formato de 24 horas. O horário de término pode ser anterior ao horário de inÃcio (por exemplo, inÃcio à s 17:00 e término à s 09:00) para ativar a opção Não perturbe da noite para o dia.", | 336 | "settings.app.scheduledDNDTimeInfo": "Horários no formato de 24 horas. O horário de término pode ser anterior ao horário de inÃcio (por exemplo, inÃcio à s 17:00 e término à s 09:00) para ativar a opção Não perturbe da noite para o dia.", |
334 | "settings.app.sentryInfo": "O envio de dados de telemetria nos permite encontrar erros no Ferdi. Não enviaremos nenhuma informação pessoal como seus dados de mensagem! Alterar esta opção requer que você reinicie o Ferdi.", | 337 | "settings.app.sentryInfo": "O envio de dados de telemetria nos permite encontrar erros no Ferdi. Não enviaremos nenhuma informação pessoal como seus dados de mensagem! Alterar esta opção requer que você reinicie o Ferdi.", |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 7a6ed77cc..785d95b48 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Actualizar", | 2 | "app.errorHandler.action": "Actualizar", |
3 | "app.errorHandler.headline": "Alguma coisa correu mal", | 3 | "app.errorHandler.headline": "Alguma coisa correu mal", |
4 | "changeserver.customServerLabel": "Servidor personalizado", | ||
4 | "changeserver.headline": "Alterar servidor", | 5 | "changeserver.headline": "Alterar servidor", |
5 | "changeserver.label": "Servidor", | 6 | "changeserver.label": "Servidor", |
6 | "changeserver.submit": "Enviar", | 7 | "changeserver.submit": "Enviar", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reiniciar serviço", | 10 | "connectionLostBanner.cta": "Reiniciar serviço", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/ro.json +++ b/src/i18n/locales/ro.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index a16bde739..beecb46e6 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Перезагрузить", | 2 | "app.errorHandler.action": "Перезагрузить", |
3 | "app.errorHandler.headline": "Что-то пошло не так", | 3 | "app.errorHandler.headline": "Что-то пошло не так", |
4 | "changeserver.customServerLabel": "ПользовательÑкий Ñервер", | ||
4 | "changeserver.headline": "Изменить Ñервер", | 5 | "changeserver.headline": "Изменить Ñервер", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "ПринÑÑ‚ÑŒ", | 7 | "changeserver.submit": "ПринÑÑ‚ÑŒ", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "ПерезапуÑтить ÑервиÑ", | 10 | "connectionLostBanner.cta": "ПерезапуÑтить ÑервиÑ", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index fd73bc773..3810cb235 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Obnoviť", | 2 | "app.errorHandler.action": "Obnoviť", |
3 | "app.errorHandler.headline": "NieÄo sa pokazilo", | 3 | "app.errorHandler.headline": "NieÄo sa pokazilo", |
4 | "changeserver.customServerLabel": "Vlastný server", | ||
4 | "changeserver.headline": "Zmeniť server", | 5 | "changeserver.headline": "Zmeniť server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Odoslať", | 7 | "changeserver.submit": "Odoslať", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Obnoviť službu", | 10 | "connectionLostBanner.cta": "Obnoviť službu", |
8 | "connectionLostBanner.informationLink": "ÄŒo sa stalo?", | 11 | "connectionLostBanner.informationLink": "ÄŒo sa stalo?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/sl.json +++ b/src/i18n/locales/sl.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 33cde814c..62c4d40a4 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Ponovno uÄitavanje", | 2 | "app.errorHandler.action": "Ponovno uÄitavanje", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Prilagođen server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Pošalji", | 7 | "changeserver.submit": "Pošalji", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Поново учирај уÑлугу", | 10 | "connectionLostBanner.cta": "Поново учирај уÑлугу", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index 418624a66..0ef654419 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Ladda om", | 2 | "app.errorHandler.action": "Ladda om", |
3 | "app.errorHandler.headline": "NÃ¥gonting gick snett", | 3 | "app.errorHandler.headline": "NÃ¥gonting gick snett", |
4 | "changeserver.customServerLabel": "Anpassad server", | ||
4 | "changeserver.headline": "Byt server", | 5 | "changeserver.headline": "Byt server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Skicka", | 7 | "changeserver.submit": "Skicka", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Ladda om tjänst", | 10 | "connectionLostBanner.cta": "Ladda om tjänst", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 428d9f18f..784c80c57 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Yenile", | 2 | "app.errorHandler.action": "Yenile", |
3 | "app.errorHandler.headline": "Bir terslik çıktı", | 3 | "app.errorHandler.headline": "Bir terslik çıktı", |
4 | "changeserver.customServerLabel": "Özel sunucu", | ||
4 | "changeserver.headline": "Sunucuyu deÄŸiÅŸtir", | 5 | "changeserver.headline": "Sunucuyu deÄŸiÅŸtir", |
5 | "changeserver.label": "Sunucu", | 6 | "changeserver.label": "Sunucu", |
6 | "changeserver.submit": "Gönder", | 7 | "changeserver.submit": "Gönder", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Servisi Tekrar Yükle", | 10 | "connectionLostBanner.cta": "Servisi Tekrar Yükle", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 25e09ea49..e481eee8c 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Перезавантажити", | 2 | "app.errorHandler.action": "Перезавантажити", |
3 | "app.errorHandler.headline": "ЩоÑÑŒ пішло не так", | 3 | "app.errorHandler.headline": "ЩоÑÑŒ пішло не так", |
4 | "changeserver.customServerLabel": "КориÑтувацький Ñервер", | ||
4 | "changeserver.headline": "Змінити Ñервер", | 5 | "changeserver.headline": "Змінити Ñервер", |
5 | "changeserver.label": "Сервер", | 6 | "changeserver.label": "Сервер", |
6 | "changeserver.submit": "Подати", | 7 | "changeserver.submit": "Подати", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Перезавантажити ÑервіÑ", | 10 | "connectionLostBanner.cta": "Перезавантажити ÑервіÑ", |
8 | "connectionLostBanner.informationLink": "Що трапилоÑÑŒ?", | 11 | "connectionLostBanner.informationLink": "Що трапилоÑÑŒ?", |
9 | "connectionLostBanner.message": "О ні! Ферді втратив з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· {name}.", | 12 | "connectionLostBanner.message": "О ні! Ферді втратив з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· {name}.", |
diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index 9d676c0a9..356c1fc1e 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "Server", | 6 | "changeserver.label": "Server", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "Reload Service", | 10 | "connectionLostBanner.cta": "Reload Service", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json index 3bba232fd..9e1c43a0f 100644 --- a/src/i18n/locales/zh-HANT.json +++ b/src/i18n/locales/zh-HANT.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "é‡æ–°åŠ 載", | 2 | "app.errorHandler.action": "é‡æ–°åŠ 載", |
3 | "app.errorHandler.headline": "出ç¾éŒ¯èª¤", | 3 | "app.errorHandler.headline": "出ç¾éŒ¯èª¤", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "切æ›æœå‹™å™¨", | 5 | "changeserver.headline": "切æ›æœå‹™å™¨", |
5 | "changeserver.label": "伺æœå™¨", | 6 | "changeserver.label": "伺æœå™¨", |
6 | "changeserver.submit": "é€å‡º", | 7 | "changeserver.submit": "é€å‡º", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "é‡æ–°è¼‰å…¥", | 10 | "connectionLostBanner.cta": "é‡æ–°è¼‰å…¥", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 2c7b75e42..c5b65d015 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json | |||
@@ -1,9 +1,12 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "é‡æ–°åŠ è½½", | 2 | "app.errorHandler.action": "é‡æ–°åŠ è½½", |
3 | "app.errorHandler.headline": "出了些问题", | 3 | "app.errorHandler.headline": "出了些问题", |
4 | "changeserver.customServerLabel": "Custom server", | ||
4 | "changeserver.headline": "Change server", | 5 | "changeserver.headline": "Change server", |
5 | "changeserver.label": "æœåŠ¡å™¨ï¼š", | 6 | "changeserver.label": "æœåŠ¡å™¨ï¼š", |
6 | "changeserver.submit": "Submit", | 7 | "changeserver.submit": "Submit", |
8 | "changeserver.urlError": "Enter a valid URL", | ||
9 | "changeserver.warning": "Extra settings offered by Ferdi will not be saved", | ||
7 | "connectionLostBanner.cta": "é‡æ–°åŠ è½½æœåŠ¡", | 10 | "connectionLostBanner.cta": "é‡æ–°åŠ è½½æœåŠ¡", |
8 | "connectionLostBanner.informationLink": "What happened?", | 11 | "connectionLostBanner.informationLink": "What happened?", |
9 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", | 12 | "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", |
diff --git a/src/i18n/messages/src/components/auth/ChangeServer.json b/src/i18n/messages/src/components/auth/ChangeServer.json index 3a122d50c..8cdfc6623 100644 --- a/src/i18n/messages/src/components/auth/ChangeServer.json +++ b/src/i18n/messages/src/components/auth/ChangeServer.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Change server", | 4 | "defaultMessage": "!!!Change server", |
5 | "file": "src/components/auth/ChangeServer.js", | 5 | "file": "src/components/auth/ChangeServer.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 11, | 7 | "line": 13, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 14, | 11 | "line": 16, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,50 @@ | |||
17 | "defaultMessage": "!!!Server", | 17 | "defaultMessage": "!!!Server", |
18 | "file": "src/components/auth/ChangeServer.js", | 18 | "file": "src/components/auth/ChangeServer.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 15, | 20 | "line": 17, |
21 | "column": 9 | 21 | "column": 9 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 18, | 24 | "line": 20, |
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "changeserver.warning", | ||
30 | "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved", | ||
31 | "file": "src/components/auth/ChangeServer.js", | ||
32 | "start": { | ||
33 | "line": 21, | ||
34 | "column": 11 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 24, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "changeserver.customServerLabel", | ||
43 | "defaultMessage": "!!!Custom server", | ||
44 | "file": "src/components/auth/ChangeServer.js", | ||
45 | "start": { | ||
46 | "line": 25, | ||
47 | "column": 21 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 28, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "changeserver.urlError", | ||
56 | "defaultMessage": "!!!Enter a valid URL", | ||
57 | "file": "src/components/auth/ChangeServer.js", | ||
58 | "start": { | ||
59 | "line": 29, | ||
60 | "column": 12 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 32, | ||
25 | "column": 3 | 64 | "column": 3 |
26 | } | 65 | } |
27 | }, | 66 | }, |
@@ -30,11 +69,11 @@ | |||
30 | "defaultMessage": "!!!Submit", | 69 | "defaultMessage": "!!!Submit", |
31 | "file": "src/components/auth/ChangeServer.js", | 70 | "file": "src/components/auth/ChangeServer.js", |
32 | "start": { | 71 | "start": { |
33 | "line": 19, | 72 | "line": 33, |
34 | "column": 10 | 73 | "column": 10 |
35 | }, | 74 | }, |
36 | "end": { | 75 | "end": { |
37 | "line": 22, | 76 | "line": 36, |
38 | "column": 3 | 77 | "column": 3 |
39 | } | 78 | } |
40 | } | 79 | } |
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json index ddd9cd094..0495aa970 100644 --- a/src/i18n/messages/src/components/layout/Sidebar.json +++ b/src/i18n/messages/src/components/layout/Sidebar.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Settings", | 4 | "defaultMessage": "!!!Settings", |
5 | "file": "src/components/layout/Sidebar.js", | 5 | "file": "src/components/layout/Sidebar.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 15, | 7 | "line": 18, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 18, | 11 | "line": 21, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Add new service", | 17 | "defaultMessage": "!!!Add new service", |
18 | "file": "src/components/layout/Sidebar.js", | 18 | "file": "src/components/layout/Sidebar.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 19, | 20 | "line": 22, |
21 | "column": 17 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 22, | 24 | "line": 25, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Disable notifications & audio", | 30 | "defaultMessage": "!!!Disable notifications & audio", |
31 | "file": "src/components/layout/Sidebar.js", | 31 | "file": "src/components/layout/Sidebar.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 23, | 33 | "line": 26, |
34 | "column": 8 | 34 | "column": 8 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 26, | 37 | "line": 29, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Enable notifications & audio", | 43 | "defaultMessage": "!!!Enable notifications & audio", |
44 | "file": "src/components/layout/Sidebar.js", | 44 | "file": "src/components/layout/Sidebar.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 27, | 46 | "line": 30, |
47 | "column": 10 | 47 | "column": 10 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 30, | 50 | "line": 33, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Open workspace drawer", | 56 | "defaultMessage": "!!!Open workspace drawer", |
57 | "file": "src/components/layout/Sidebar.js", | 57 | "file": "src/components/layout/Sidebar.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 31, | 59 | "line": 34, |
60 | "column": 23 | 60 | "column": 23 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 34, | 63 | "line": 37, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Close workspace drawer", | 69 | "defaultMessage": "!!!Close workspace drawer", |
70 | "file": "src/components/layout/Sidebar.js", | 70 | "file": "src/components/layout/Sidebar.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 35, | 72 | "line": 38, |
73 | "column": 24 | 73 | "column": 24 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 38, | 76 | "line": 41, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Open Franz Todos", | 82 | "defaultMessage": "!!!Open Franz Todos", |
83 | "file": "src/components/layout/Sidebar.js", | 83 | "file": "src/components/layout/Sidebar.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 39, | 85 | "line": 42, |
86 | "column": 19 | 86 | "column": 19 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 42, | 89 | "line": 45, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Close Franz Todos", | 95 | "defaultMessage": "!!!Close Franz Todos", |
96 | "file": "src/components/layout/Sidebar.js", | 96 | "file": "src/components/layout/Sidebar.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 43, | 98 | "line": 46, |
99 | "column": 20 | 99 | "column": 20 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 46, | 102 | "line": 49, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Lock Ferdi", | 108 | "defaultMessage": "!!!Lock Ferdi", |
109 | "file": "src/components/layout/Sidebar.js", | 109 | "file": "src/components/layout/Sidebar.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 47, | 111 | "line": 50, |
112 | "column": 13 | 112 | "column": 13 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 50, | 115 | "line": 53, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | } | 118 | } |
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json index f6afe5246..df5e7714a 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Launch Ferdi on start", | 4 | "defaultMessage": "!!!Launch Ferdi on start", |
5 | "file": "src/containers/settings/EditSettingsScreen.js", | 5 | "file": "src/containers/settings/EditSettingsScreen.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 29, | 7 | "line": 30, |
8 | "column": 21 | 8 | "column": 21 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 32, | 11 | "line": 33, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Open in background", | 17 | "defaultMessage": "!!!Open in background", |
18 | "file": "src/containers/settings/EditSettingsScreen.js", | 18 | "file": "src/containers/settings/EditSettingsScreen.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 33, | 20 | "line": 34, |
21 | "column": 26 | 21 | "column": 26 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 36, | 24 | "line": 37, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", | 30 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", |
31 | "file": "src/containers/settings/EditSettingsScreen.js", | 31 | "file": "src/containers/settings/EditSettingsScreen.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 37, | 33 | "line": 38, |
34 | "column": 19 | 34 | "column": 19 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 40, | 37 | "line": 41, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Start minimized", | 43 | "defaultMessage": "!!!Start minimized", |
44 | "file": "src/containers/settings/EditSettingsScreen.js", | 44 | "file": "src/containers/settings/EditSettingsScreen.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 41, | 46 | "line": 42, |
47 | "column": 18 | 47 | "column": 18 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 44, | 50 | "line": 45, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Always show Ferdi in system tray", | 56 | "defaultMessage": "!!!Always show Ferdi in system tray", |
57 | "file": "src/containers/settings/EditSettingsScreen.js", | 57 | "file": "src/containers/settings/EditSettingsScreen.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 45, | 59 | "line": 46, |
60 | "column": 20 | 60 | "column": 20 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 48, | 63 | "line": 49, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Reload Ferdi after system resume", | 69 | "defaultMessage": "!!!Reload Ferdi after system resume", |
70 | "file": "src/containers/settings/EditSettingsScreen.js", | 70 | "file": "src/containers/settings/EditSettingsScreen.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 49, | 72 | "line": 50, |
73 | "column": 21 | 73 | "column": 21 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 52, | 76 | "line": 53, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Minimize Ferdi to system tray", | 82 | "defaultMessage": "!!!Minimize Ferdi to system tray", |
83 | "file": "src/containers/settings/EditSettingsScreen.js", | 83 | "file": "src/containers/settings/EditSettingsScreen.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 53, | 85 | "line": 54, |
86 | "column": 24 | 86 | "column": 24 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 56, | 89 | "line": 57, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Don't show message content in notifications", | 95 | "defaultMessage": "!!!Don't show message content in notifications", |
96 | "file": "src/containers/settings/EditSettingsScreen.js", | 96 | "file": "src/containers/settings/EditSettingsScreen.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 57, | 98 | "line": 58, |
99 | "column": 24 | 99 | "column": 24 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 60, | 102 | "line": 61, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Navigation bar behaviour", | 108 | "defaultMessage": "!!!Navigation bar behaviour", |
109 | "file": "src/containers/settings/EditSettingsScreen.js", | 109 | "file": "src/containers/settings/EditSettingsScreen.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 61, | 111 | "line": 62, |
112 | "column": 26 | 112 | "column": 26 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 64, | 115 | "line": 65, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Send telemetry data", | 121 | "defaultMessage": "!!!Send telemetry data", |
122 | "file": "src/containers/settings/EditSettingsScreen.js", | 122 | "file": "src/containers/settings/EditSettingsScreen.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 65, | 124 | "line": 66, |
125 | "column": 10 | 125 | "column": 10 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 68, | 128 | "line": 69, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!Enable service hibernation", | 134 | "defaultMessage": "!!!Enable service hibernation", |
135 | "file": "src/containers/settings/EditSettingsScreen.js", | 135 | "file": "src/containers/settings/EditSettingsScreen.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 69, | 137 | "line": 70, |
138 | "column": 13 | 138 | "column": 13 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 72, | 141 | "line": 73, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Keep services in hibernation on startup", | 147 | "defaultMessage": "!!!Keep services in hibernation on startup", |
148 | "file": "src/containers/settings/EditSettingsScreen.js", | 148 | "file": "src/containers/settings/EditSettingsScreen.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 73, | 150 | "line": 74, |
151 | "column": 22 | 151 | "column": 22 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 76, | 154 | "line": 77, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!Hibernation strategy", | 160 | "defaultMessage": "!!!Hibernation strategy", |
161 | "file": "src/containers/settings/EditSettingsScreen.js", | 161 | "file": "src/containers/settings/EditSettingsScreen.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 77, | 163 | "line": 78, |
164 | "column": 23 | 164 | "column": 23 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 80, | 167 | "line": 81, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,11 +173,11 @@ | |||
173 | "defaultMessage": "!!!Todo Server", | 173 | "defaultMessage": "!!!Todo Server", |
174 | "file": "src/containers/settings/EditSettingsScreen.js", | 174 | "file": "src/containers/settings/EditSettingsScreen.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 81, | 176 | "line": 82, |
177 | "column": 24 | 177 | "column": 24 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
180 | "line": 84, | 180 | "line": 85, |
181 | "column": 3 | 181 | "column": 3 |
182 | } | 182 | } |
183 | }, | 183 | }, |
@@ -186,11 +186,11 @@ | |||
186 | "defaultMessage": "!!!Custom TodoServer", | 186 | "defaultMessage": "!!!Custom TodoServer", |
187 | "file": "src/containers/settings/EditSettingsScreen.js", | 187 | "file": "src/containers/settings/EditSettingsScreen.js", |
188 | "start": { | 188 | "start": { |
189 | "line": 85, | 189 | "line": 86, |
190 | "column": 20 | 190 | "column": 20 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 88, | 193 | "line": 89, |
194 | "column": 3 | 194 | "column": 3 |
195 | } | 195 | } |
196 | }, | 196 | }, |
@@ -199,11 +199,11 @@ | |||
199 | "defaultMessage": "!!!Enable Password Lock", | 199 | "defaultMessage": "!!!Enable Password Lock", |
200 | "file": "src/containers/settings/EditSettingsScreen.js", | 200 | "file": "src/containers/settings/EditSettingsScreen.js", |
201 | "start": { | 201 | "start": { |
202 | "line": 89, | 202 | "line": 90, |
203 | "column": 14 | 203 | "column": 14 |
204 | }, | 204 | }, |
205 | "end": { | 205 | "end": { |
206 | "line": 92, | 206 | "line": 93, |
207 | "column": 3 | 207 | "column": 3 |
208 | } | 208 | } |
209 | }, | 209 | }, |
@@ -212,11 +212,11 @@ | |||
212 | "defaultMessage": "!!!Password", | 212 | "defaultMessage": "!!!Password", |
213 | "file": "src/containers/settings/EditSettingsScreen.js", | 213 | "file": "src/containers/settings/EditSettingsScreen.js", |
214 | "start": { | 214 | "start": { |
215 | "line": 93, | 215 | "line": 94, |
216 | "column": 16 | 216 | "column": 16 |
217 | }, | 217 | }, |
218 | "end": { | 218 | "end": { |
219 | "line": 96, | 219 | "line": 97, |
220 | "column": 3 | 220 | "column": 3 |
221 | } | 221 | } |
222 | }, | 222 | }, |
@@ -225,11 +225,11 @@ | |||
225 | "defaultMessage": "!!!Allow using Touch ID to unlock", | 225 | "defaultMessage": "!!!Allow using Touch ID to unlock", |
226 | "file": "src/containers/settings/EditSettingsScreen.js", | 226 | "file": "src/containers/settings/EditSettingsScreen.js", |
227 | "start": { | 227 | "start": { |
228 | "line": 97, | 228 | "line": 98, |
229 | "column": 22 | 229 | "column": 22 |
230 | }, | 230 | }, |
231 | "end": { | 231 | "end": { |
232 | "line": 100, | 232 | "line": 101, |
233 | "column": 3 | 233 | "column": 3 |
234 | } | 234 | } |
235 | }, | 235 | }, |
@@ -238,11 +238,11 @@ | |||
238 | "defaultMessage": "!!!Lock after inactivity", | 238 | "defaultMessage": "!!!Lock after inactivity", |
239 | "file": "src/containers/settings/EditSettingsScreen.js", | 239 | "file": "src/containers/settings/EditSettingsScreen.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 101, | 241 | "line": 102, |
242 | "column": 18 | 242 | "column": 18 |
243 | }, | 243 | }, |
244 | "end": { | 244 | "end": { |
245 | "line": 104, | 245 | "line": 105, |
246 | "column": 3 | 246 | "column": 3 |
247 | } | 247 | } |
248 | }, | 248 | }, |
@@ -251,11 +251,11 @@ | |||
251 | "defaultMessage": "!!!Enable scheduled Do-not-Disturb", | 251 | "defaultMessage": "!!!Enable scheduled Do-not-Disturb", |
252 | "file": "src/containers/settings/EditSettingsScreen.js", | 252 | "file": "src/containers/settings/EditSettingsScreen.js", |
253 | "start": { | 253 | "start": { |
254 | "line": 105, | 254 | "line": 106, |
255 | "column": 23 | 255 | "column": 23 |
256 | }, | 256 | }, |
257 | "end": { | 257 | "end": { |
258 | "line": 108, | 258 | "line": 109, |
259 | "column": 3 | 259 | "column": 3 |
260 | } | 260 | } |
261 | }, | 261 | }, |
@@ -264,11 +264,11 @@ | |||
264 | "defaultMessage": "!!!From", | 264 | "defaultMessage": "!!!From", |
265 | "file": "src/containers/settings/EditSettingsScreen.js", | 265 | "file": "src/containers/settings/EditSettingsScreen.js", |
266 | "start": { | 266 | "start": { |
267 | "line": 109, | 267 | "line": 110, |
268 | "column": 21 | 268 | "column": 21 |
269 | }, | 269 | }, |
270 | "end": { | 270 | "end": { |
271 | "line": 112, | 271 | "line": 113, |
272 | "column": 3 | 272 | "column": 3 |
273 | } | 273 | } |
274 | }, | 274 | }, |
@@ -277,11 +277,11 @@ | |||
277 | "defaultMessage": "!!!To", | 277 | "defaultMessage": "!!!To", |
278 | "file": "src/containers/settings/EditSettingsScreen.js", | 278 | "file": "src/containers/settings/EditSettingsScreen.js", |
279 | "start": { | 279 | "start": { |
280 | "line": 113, | 280 | "line": 114, |
281 | "column": 19 | 281 | "column": 19 |
282 | }, | 282 | }, |
283 | "end": { | 283 | "end": { |
284 | "line": 116, | 284 | "line": 117, |
285 | "column": 3 | 285 | "column": 3 |
286 | } | 286 | } |
287 | }, | 287 | }, |
@@ -290,11 +290,11 @@ | |||
290 | "defaultMessage": "!!!Language", | 290 | "defaultMessage": "!!!Language", |
291 | "file": "src/containers/settings/EditSettingsScreen.js", | 291 | "file": "src/containers/settings/EditSettingsScreen.js", |
292 | "start": { | 292 | "start": { |
293 | "line": 117, | 293 | "line": 118, |
294 | "column": 12 | 294 | "column": 12 |
295 | }, | 295 | }, |
296 | "end": { | 296 | "end": { |
297 | "line": 120, | 297 | "line": 121, |
298 | "column": 3 | 298 | "column": 3 |
299 | } | 299 | } |
300 | }, | 300 | }, |
@@ -303,11 +303,11 @@ | |||
303 | "defaultMessage": "!!!Dark Mode", | 303 | "defaultMessage": "!!!Dark Mode", |
304 | "file": "src/containers/settings/EditSettingsScreen.js", | 304 | "file": "src/containers/settings/EditSettingsScreen.js", |
305 | "start": { | 305 | "start": { |
306 | "line": 121, | 306 | "line": 122, |
307 | "column": 12 | 307 | "column": 12 |
308 | }, | 308 | }, |
309 | "end": { | 309 | "end": { |
310 | "line": 124, | 310 | "line": 125, |
311 | "column": 3 | 311 | "column": 3 |
312 | } | 312 | } |
313 | }, | 313 | }, |
@@ -316,11 +316,11 @@ | |||
316 | "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", | 316 | "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", |
317 | "file": "src/containers/settings/EditSettingsScreen.js", | 317 | "file": "src/containers/settings/EditSettingsScreen.js", |
318 | "start": { | 318 | "start": { |
319 | "line": 125, | 319 | "line": 126, |
320 | "column": 21 | 320 | "column": 21 |
321 | }, | 321 | }, |
322 | "end": { | 322 | "end": { |
323 | "line": 128, | 323 | "line": 129, |
324 | "column": 3 | 324 | "column": 3 |
325 | } | 325 | } |
326 | }, | 326 | }, |
@@ -329,11 +329,11 @@ | |||
329 | "defaultMessage": "!!!Enable universal Dark Mode", | 329 | "defaultMessage": "!!!Enable universal Dark Mode", |
330 | "file": "src/containers/settings/EditSettingsScreen.js", | 330 | "file": "src/containers/settings/EditSettingsScreen.js", |
331 | "start": { | 331 | "start": { |
332 | "line": 129, | 332 | "line": 130, |
333 | "column": 21 | 333 | "column": 21 |
334 | }, | 334 | }, |
335 | "end": { | 335 | "end": { |
336 | "line": 132, | 336 | "line": 133, |
337 | "column": 3 | 337 | "column": 3 |
338 | } | 338 | } |
339 | }, | 339 | }, |
@@ -342,11 +342,11 @@ | |||
342 | "defaultMessage": "!!!Sidebar width", | 342 | "defaultMessage": "!!!Sidebar width", |
343 | "file": "src/containers/settings/EditSettingsScreen.js", | 343 | "file": "src/containers/settings/EditSettingsScreen.js", |
344 | "start": { | 344 | "start": { |
345 | "line": 133, | 345 | "line": 134, |
346 | "column": 22 | 346 | "column": 22 |
347 | }, | 347 | }, |
348 | "end": { | 348 | "end": { |
349 | "line": 136, | 349 | "line": 137, |
350 | "column": 3 | 350 | "column": 3 |
351 | } | 351 | } |
352 | }, | 352 | }, |
@@ -355,11 +355,11 @@ | |||
355 | "defaultMessage": "!!!Service icon size", | 355 | "defaultMessage": "!!!Service icon size", |
356 | "file": "src/containers/settings/EditSettingsScreen.js", | 356 | "file": "src/containers/settings/EditSettingsScreen.js", |
357 | "start": { | 357 | "start": { |
358 | "line": 137, | 358 | "line": 138, |
359 | "column": 12 | 359 | "column": 12 |
360 | }, | 360 | }, |
361 | "end": { | 361 | "end": { |
362 | "line": 140, | 362 | "line": 141, |
363 | "column": 3 | 363 | "column": 3 |
364 | } | 364 | } |
365 | }, | 365 | }, |
@@ -368,11 +368,11 @@ | |||
368 | "defaultMessage": "!!!Accent color", | 368 | "defaultMessage": "!!!Accent color", |
369 | "file": "src/containers/settings/EditSettingsScreen.js", | 369 | "file": "src/containers/settings/EditSettingsScreen.js", |
370 | "start": { | 370 | "start": { |
371 | "line": 141, | 371 | "line": 142, |
372 | "column": 15 | 372 | "column": 15 |
373 | }, | 373 | }, |
374 | "end": { | 374 | "end": { |
375 | "line": 144, | 375 | "line": 145, |
376 | "column": 3 | 376 | "column": 3 |
377 | } | 377 | } |
378 | }, | 378 | }, |
@@ -381,11 +381,11 @@ | |||
381 | "defaultMessage": "!!!Display disabled services tabs", | 381 | "defaultMessage": "!!!Display disabled services tabs", |
382 | "file": "src/containers/settings/EditSettingsScreen.js", | 382 | "file": "src/containers/settings/EditSettingsScreen.js", |
383 | "start": { | 383 | "start": { |
384 | "line": 145, | 384 | "line": 146, |
385 | "column": 24 | 385 | "column": 24 |
386 | }, | 386 | }, |
387 | "end": { | 387 | "end": { |
388 | "line": 148, | 388 | "line": 149, |
389 | "column": 3 | 389 | "column": 3 |
390 | } | 390 | } |
391 | }, | 391 | }, |
@@ -394,11 +394,11 @@ | |||
394 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 394 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
395 | "file": "src/containers/settings/EditSettingsScreen.js", | 395 | "file": "src/containers/settings/EditSettingsScreen.js", |
396 | "start": { | 396 | "start": { |
397 | "line": 149, | 397 | "line": 150, |
398 | "column": 29 | 398 | "column": 29 |
399 | }, | 399 | }, |
400 | "end": { | 400 | "end": { |
401 | "line": 152, | 401 | "line": 153, |
402 | "column": 3 | 402 | "column": 3 |
403 | } | 403 | } |
404 | }, | 404 | }, |
@@ -407,11 +407,11 @@ | |||
407 | "defaultMessage": "!!!Show draggable area on window", | 407 | "defaultMessage": "!!!Show draggable area on window", |
408 | "file": "src/containers/settings/EditSettingsScreen.js", | 408 | "file": "src/containers/settings/EditSettingsScreen.js", |
409 | "start": { | 409 | "start": { |
410 | "line": 153, | 410 | "line": 154, |
411 | "column": 16 | 411 | "column": 16 |
412 | }, | 412 | }, |
413 | "end": { | 413 | "end": { |
414 | "line": 156, | 414 | "line": 157, |
415 | "column": 3 | 415 | "column": 3 |
416 | } | 416 | } |
417 | }, | 417 | }, |
@@ -420,11 +420,11 @@ | |||
420 | "defaultMessage": "!!!Enable spell checking", | 420 | "defaultMessage": "!!!Enable spell checking", |
421 | "file": "src/containers/settings/EditSettingsScreen.js", | 421 | "file": "src/containers/settings/EditSettingsScreen.js", |
422 | "start": { | 422 | "start": { |
423 | "line": 157, | 423 | "line": 158, |
424 | "column": 23 | 424 | "column": 23 |
425 | }, | 425 | }, |
426 | "end": { | 426 | "end": { |
427 | "line": 160, | 427 | "line": 161, |
428 | "column": 3 | 428 | "column": 3 |
429 | } | 429 | } |
430 | }, | 430 | }, |
@@ -433,11 +433,11 @@ | |||
433 | "defaultMessage": "!!!Enable GPU Acceleration", | 433 | "defaultMessage": "!!!Enable GPU Acceleration", |
434 | "file": "src/containers/settings/EditSettingsScreen.js", | 434 | "file": "src/containers/settings/EditSettingsScreen.js", |
435 | "start": { | 435 | "start": { |
436 | "line": 161, | 436 | "line": 162, |
437 | "column": 25 | 437 | "column": 25 |
438 | }, | 438 | }, |
439 | "end": { | 439 | "end": { |
440 | "line": 164, | 440 | "line": 165, |
441 | "column": 3 | 441 | "column": 3 |
442 | } | 442 | } |
443 | }, | 443 | }, |
@@ -446,11 +446,11 @@ | |||
446 | "defaultMessage": "!!!Include beta versions", | 446 | "defaultMessage": "!!!Include beta versions", |
447 | "file": "src/containers/settings/EditSettingsScreen.js", | 447 | "file": "src/containers/settings/EditSettingsScreen.js", |
448 | "start": { | 448 | "start": { |
449 | "line": 165, | 449 | "line": 166, |
450 | "column": 8 | 450 | "column": 8 |
451 | }, | 451 | }, |
452 | "end": { | 452 | "end": { |
453 | "line": 168, | 453 | "line": 169, |
454 | "column": 3 | 454 | "column": 3 |
455 | } | 455 | } |
456 | }, | 456 | }, |
@@ -459,11 +459,11 @@ | |||
459 | "defaultMessage": "!!!Enable updates", | 459 | "defaultMessage": "!!!Enable updates", |
460 | "file": "src/containers/settings/EditSettingsScreen.js", | 460 | "file": "src/containers/settings/EditSettingsScreen.js", |
461 | "start": { | 461 | "start": { |
462 | "line": 169, | 462 | "line": 170, |
463 | "column": 20 | 463 | "column": 20 |
464 | }, | 464 | }, |
465 | "end": { | 465 | "end": { |
466 | "line": 172, | 466 | "line": 173, |
467 | "column": 3 | 467 | "column": 3 |
468 | } | 468 | } |
469 | }, | 469 | }, |
@@ -472,11 +472,11 @@ | |||
472 | "defaultMessage": "!!!Enable Franz Todos", | 472 | "defaultMessage": "!!!Enable Franz Todos", |
473 | "file": "src/containers/settings/EditSettingsScreen.js", | 473 | "file": "src/containers/settings/EditSettingsScreen.js", |
474 | "start": { | 474 | "start": { |
475 | "line": 173, | 475 | "line": 174, |
476 | "column": 15 | 476 | "column": 15 |
477 | }, | 477 | }, |
478 | "end": { | 478 | "end": { |
479 | "line": 176, | 479 | "line": 177, |
480 | "column": 3 | 480 | "column": 3 |
481 | } | 481 | } |
482 | }, | 482 | }, |
@@ -485,11 +485,11 @@ | |||
485 | "defaultMessage": "!!!Keep all workspaces loaded", | 485 | "defaultMessage": "!!!Keep all workspaces loaded", |
486 | "file": "src/containers/settings/EditSettingsScreen.js", | 486 | "file": "src/containers/settings/EditSettingsScreen.js", |
487 | "start": { | 487 | "start": { |
488 | "line": 177, | 488 | "line": 178, |
489 | "column": 27 | 489 | "column": 27 |
490 | }, | 490 | }, |
491 | "end": { | 491 | "end": { |
492 | "line": 180, | 492 | "line": 181, |
493 | "column": 3 | 493 | "column": 3 |
494 | } | 494 | } |
495 | } | 495 | } |
diff --git a/src/index.js b/src/index.js index 027884826..dac8ec770 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -35,6 +35,7 @@ import { | |||
35 | import { mainIpcHandler as basicAuthHandler } from './features/basicAuth'; | 35 | import { mainIpcHandler as basicAuthHandler } from './features/basicAuth'; |
36 | import ipcApi from './electron/ipc-api'; | 36 | import ipcApi from './electron/ipc-api'; |
37 | import Tray from './lib/Tray'; | 37 | import Tray from './lib/Tray'; |
38 | import DBus from './lib/DBus'; | ||
38 | import Settings from './electron/Settings'; | 39 | import Settings from './electron/Settings'; |
39 | import handleDeepLink from './electron/deepLinking'; | 40 | import handleDeepLink from './electron/deepLinking'; |
40 | import { isPositionValid } from './electron/windowUtils'; | 41 | import { isPositionValid } from './electron/windowUtils'; |
@@ -152,8 +153,8 @@ const createWindow = () => { | |||
152 | const mainWindowState = windowStateKeeper({ | 153 | const mainWindowState = windowStateKeeper({ |
153 | defaultWidth: DEFAULT_WINDOW_OPTIONS.width, | 154 | defaultWidth: DEFAULT_WINDOW_OPTIONS.width, |
154 | defaultHeight: DEFAULT_WINDOW_OPTIONS.height, | 155 | defaultHeight: DEFAULT_WINDOW_OPTIONS.height, |
155 | maximize: false, | 156 | maximize: true, // Automatically maximizes the window, if it was last clsoed maximized |
156 | fullScreen: false, | 157 | fullScreen: true, // Automatically restores the window to full screen, if it was last closed full screen |
157 | }); | 158 | }); |
158 | 159 | ||
159 | let posX = mainWindowState.x || DEFAULT_WINDOW_OPTIONS.x; | 160 | let posX = mainWindowState.x || DEFAULT_WINDOW_OPTIONS.x; |
@@ -192,6 +193,14 @@ const createWindow = () => { | |||
192 | }, | 193 | }, |
193 | }); | 194 | }); |
194 | 195 | ||
196 | app.on('web-contents-created', (e, contents) => { | ||
197 | if (contents.getType() === 'webview') { | ||
198 | contents.on('new-window', (event) => { | ||
199 | event.preventDefault(); | ||
200 | }); | ||
201 | } | ||
202 | }); | ||
203 | |||
195 | mainWindow.webContents.on('did-finish-load', () => { | 204 | mainWindow.webContents.on('did-finish-load', () => { |
196 | const fns = onDidLoadFns; | 205 | const fns = onDidLoadFns; |
197 | onDidLoadFns = null; | 206 | onDidLoadFns = null; |
@@ -205,6 +214,9 @@ const createWindow = () => { | |||
205 | // Initialize System Tray | 214 | // Initialize System Tray |
206 | const trayIcon = new Tray(); | 215 | const trayIcon = new Tray(); |
207 | 216 | ||
217 | // Initialize DBus interface | ||
218 | const dbus = new DBus(trayIcon); | ||
219 | |||
208 | // Initialize ipcApi | 220 | // Initialize ipcApi |
209 | ipcApi({ | 221 | ipcApi({ |
210 | mainWindow, | 222 | mainWindow, |
@@ -215,6 +227,9 @@ const createWindow = () => { | |||
215 | trayIcon, | 227 | trayIcon, |
216 | }); | 228 | }); |
217 | 229 | ||
230 | // Connect to the DBus after ipcApi took care of the System Tray | ||
231 | dbus.start(); | ||
232 | |||
218 | // Manage Window State | 233 | // Manage Window State |
219 | mainWindowState.manage(mainWindow); | 234 | mainWindowState.manage(mainWindow); |
220 | 235 | ||
@@ -257,6 +272,7 @@ const createWindow = () => { | |||
257 | mainWindow.hide(); | 272 | mainWindow.hide(); |
258 | } | 273 | } |
259 | } else { | 274 | } else { |
275 | dbus.stop(); | ||
260 | app.quit(); | 276 | app.quit(); |
261 | } | 277 | } |
262 | }); | 278 | }); |
@@ -316,7 +332,7 @@ const createWindow = () => { | |||
316 | e.preventDefault(); | 332 | e.preventDefault(); |
317 | 333 | ||
318 | if (isValidExternalURL(url)) { | 334 | if (isValidExternalURL(url)) { |
319 | shell.openExternal(url); | 335 | shell.openExternal(url); |
320 | } | 336 | } |
321 | }); | 337 | }); |
322 | 338 | ||
@@ -395,6 +411,15 @@ ipcMain.on('feature-basic-auth-credentials', (e, { user, password }) => { | |||
395 | authCallback = noop; | 411 | authCallback = noop; |
396 | }); | 412 | }); |
397 | 413 | ||
414 | ipcMain.on('open-browser-window', (e, {disposition, url}, serviceId) => { | ||
415 | if (disposition === 'foreground-tab') { | ||
416 | let serviceSession = session.fromPartition(`persist:service-${serviceId}`) | ||
417 | let child = new BrowserWindow({ parent: mainWindow, webPreferences: {session: serviceSession}}); | ||
418 | child.show(); | ||
419 | child.loadURL(url); | ||
420 | } | ||
421 | debug('Received open-browser-window', disposition, url); | ||
422 | }); | ||
398 | 423 | ||
399 | ipcMain.on('modifyRequestHeaders', (e, { modifiedRequestHeaders, serviceId }) => { | 424 | ipcMain.on('modifyRequestHeaders', (e, { modifiedRequestHeaders, serviceId }) => { |
400 | debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId); | 425 | debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId); |
diff --git a/src/lib/DBus.js b/src/lib/DBus.js new file mode 100644 index 000000000..957912efa --- /dev/null +++ b/src/lib/DBus.js | |||
@@ -0,0 +1,49 @@ | |||
1 | import { | ||
2 | sessionBus, | ||
3 | } from 'dbus-next'; | ||
4 | import { | ||
5 | isLinux, | ||
6 | } from '../environment'; | ||
7 | |||
8 | export default class DBus { | ||
9 | bus = null; | ||
10 | |||
11 | constructor(trayIcon) { | ||
12 | this.trayIcon = trayIcon; | ||
13 | } | ||
14 | |||
15 | start() { | ||
16 | if (!isLinux || this.bus) return; | ||
17 | |||
18 | try { | ||
19 | this.bus = sessionBus(); | ||
20 | } catch { | ||
21 | // Error connecting to the bus. | ||
22 | return; | ||
23 | } | ||
24 | |||
25 | // HACK Hook onto the MessageBus to track StatusNotifierWatchers | ||
26 | this.bus._addMatch("type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',path='/org/freedesktop/DBus',member='NameOwnerChanged'"); | ||
27 | const mangled = JSON.stringify({ | ||
28 | path: '/org/freedesktop/DBus', | ||
29 | interface: 'org.freedesktop.DBus', | ||
30 | member: 'NameOwnerChanged', | ||
31 | }); | ||
32 | this.bus._signals.on(mangled, (msg) => { | ||
33 | const [name, oldOwner, newOwner] = msg.body; | ||
34 | if (name === 'org.kde.StatusNotifierWatcher' && oldOwner !== newOwner && newOwner !== '') { | ||
35 | // Leave ample time for the StatusNotifierWatcher to be initialized | ||
36 | setTimeout(() => { | ||
37 | this.trayIcon.recreateIfVisible(); | ||
38 | }, 400); | ||
39 | } | ||
40 | }); | ||
41 | } | ||
42 | |||
43 | stop() { | ||
44 | if (!this.bus) return; | ||
45 | |||
46 | this.bus.disconnect(); | ||
47 | this.bus = null; | ||
48 | } | ||
49 | } | ||
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 07a29a224..3c5fc6530 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -921,7 +921,7 @@ export default class FranzMenu { | |||
921 | tpl[5].submenu = this.todosMenu(); | 921 | tpl[5].submenu = this.todosMenu(); |
922 | } | 922 | } |
923 | } else { | 923 | } else { |
924 | const touchIdEnabled = this.stores.settings.app.useTouchIdToUnlock && systemPreferences.canPromptTouchID(); | 924 | const touchIdEnabled = isMac ? (this.stores.settings.app.useTouchIdToUnlock && systemPreferences.canPromptTouchID()) : false; |
925 | 925 | ||
926 | tpl[0].submenu.unshift({ | 926 | tpl[0].submenu.unshift({ |
927 | label: intl.formatMessage(menuItems.touchId), | 927 | label: intl.formatMessage(menuItems.touchId), |
diff --git a/src/lib/Tray.js b/src/lib/Tray.js index d6d49b0c8..c6d9db004 100644 --- a/src/lib/Tray.js +++ b/src/lib/Tray.js | |||
@@ -2,6 +2,11 @@ import { | |||
2 | app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, | 2 | app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, |
3 | } from 'electron'; | 3 | } from 'electron'; |
4 | import path from 'path'; | 4 | import path from 'path'; |
5 | import { | ||
6 | isMac, | ||
7 | isWindows, | ||
8 | isLinux, | ||
9 | } from '../environment'; | ||
5 | 10 | ||
6 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; | 11 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; |
7 | const INDICATOR_TRAY_PLAIN = 'tray'; | 12 | const INDICATOR_TRAY_PLAIN = 'tray'; |
@@ -17,15 +22,20 @@ export default class TrayIcon { | |||
17 | 22 | ||
18 | trayMenu = null; | 23 | trayMenu = null; |
19 | 24 | ||
25 | visible = false; | ||
26 | |||
20 | trayMenuTemplate = [ | 27 | trayMenuTemplate = [ |
21 | { | 28 | { |
22 | label: 'Show Ferdi', | 29 | label: 'Show Ferdi', |
23 | click() { | 30 | click() { |
24 | if (app.mainWindow.isMinimized()) { | 31 | if (app.mainWindow.isMinimized()) { |
25 | app.mainWindow.restore(); | 32 | app.mainWindow.restore(); |
33 | } else if (app.mainWindow.isVisible()) { | ||
34 | app.mainWindow.hide(); | ||
35 | } else { | ||
36 | app.mainWindow.show(); | ||
37 | app.mainWindow.focus(); | ||
26 | } | 38 | } |
27 | app.mainWindow.show(); | ||
28 | app.mainWindow.focus(); | ||
29 | }, | 39 | }, |
30 | }, | 40 | }, |
31 | { | 41 | { |
@@ -42,15 +52,35 @@ export default class TrayIcon { | |||
42 | }, | 52 | }, |
43 | ]; | 53 | ]; |
44 | 54 | ||
55 | constructor() { | ||
56 | ipcMain.on('initialAppSettings', (event, appSettings) => { | ||
57 | this._updateTrayMenu(appSettings); | ||
58 | }); | ||
59 | |||
60 | ipcMain.on('updateAppSettings', (event, appSettings) => { | ||
61 | this._updateTrayMenu(appSettings); | ||
62 | }); | ||
63 | } | ||
64 | |||
45 | _updateTrayMenu(appSettings) { | 65 | _updateTrayMenu(appSettings) { |
66 | if (!this.trayIcon) return; | ||
67 | |||
46 | if (appSettings.type === 'app') { | 68 | if (appSettings.type === 'app') { |
47 | const { isAppMuted } = appSettings.data; | 69 | const { isAppMuted } = appSettings.data; |
48 | this.trayMenuTemplate[1].label = isAppMuted ? 'Enable Notifications && Audio' : 'Disable Notifications && Audio'; | 70 | this.trayMenuTemplate[1].label = isAppMuted ? 'Enable Notifications && Audio' : 'Disable Notifications && Audio'; |
49 | this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); | 71 | this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); |
72 | if (isLinux) { | ||
73 | this.trayIcon.setContextMenu(this.trayMenu); | ||
74 | } | ||
50 | } | 75 | } |
51 | } | 76 | } |
52 | 77 | ||
53 | show() { | 78 | show() { |
79 | this.visible = true; | ||
80 | this._show(); | ||
81 | } | ||
82 | |||
83 | _show() { | ||
54 | if (this.trayIcon) return; | 84 | if (this.trayIcon) return; |
55 | 85 | ||
56 | this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN)); | 86 | this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN)); |
@@ -58,14 +88,9 @@ export default class TrayIcon { | |||
58 | this.trayIcon.setToolTip('Ferdi'); | 88 | this.trayIcon.setToolTip('Ferdi'); |
59 | 89 | ||
60 | this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); | 90 | this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); |
61 | 91 | if (isLinux) { | |
62 | ipcMain.on('initialAppSettings', (event, appSettings) => { | 92 | this.trayIcon.setContextMenu(this.trayMenu); |
63 | this._updateTrayMenu(appSettings); | 93 | } |
64 | }); | ||
65 | |||
66 | ipcMain.on('updateAppSettings', (event, appSettings) => { | ||
67 | this._updateTrayMenu(appSettings); | ||
68 | }); | ||
69 | 94 | ||
70 | this.trayIcon.on('click', () => { | 95 | this.trayIcon.on('click', () => { |
71 | if (app.mainWindow.isMinimized()) { | 96 | if (app.mainWindow.isMinimized()) { |
@@ -78,9 +103,11 @@ export default class TrayIcon { | |||
78 | } | 103 | } |
79 | }); | 104 | }); |
80 | 105 | ||
81 | this.trayIcon.on('right-click', () => { | 106 | if (isMac || isWindows) { |
82 | this.trayIcon.popUpContextMenu(this.trayMenu); | 107 | this.trayIcon.on('right-click', () => { |
83 | }); | 108 | this.trayIcon.popUpContextMenu(this.trayMenu); |
109 | }); | ||
110 | } | ||
84 | 111 | ||
85 | if (process.platform === 'darwin') { | 112 | if (process.platform === 'darwin') { |
86 | this.themeChangeSubscriberId = systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', () => { | 113 | this.themeChangeSubscriberId = systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', () => { |
@@ -90,6 +117,11 @@ export default class TrayIcon { | |||
90 | } | 117 | } |
91 | 118 | ||
92 | hide() { | 119 | hide() { |
120 | this.visible = false; | ||
121 | this._hide(); | ||
122 | } | ||
123 | |||
124 | _hide() { | ||
93 | if (!this.trayIcon) return; | 125 | if (!this.trayIcon) return; |
94 | 126 | ||
95 | this.trayIcon.destroy(); | 127 | this.trayIcon.destroy(); |
@@ -101,6 +133,17 @@ export default class TrayIcon { | |||
101 | } | 133 | } |
102 | } | 134 | } |
103 | 135 | ||
136 | recreateIfVisible() { | ||
137 | if (this.visible) { | ||
138 | this._hide(); | ||
139 | setTimeout(() => { | ||
140 | if (this.visible) { | ||
141 | this._show(); | ||
142 | } | ||
143 | }, 100); | ||
144 | } | ||
145 | } | ||
146 | |||
104 | setIndicator(indicator) { | 147 | setIndicator(indicator) { |
105 | this.indicator = indicator; | 148 | this.indicator = indicator; |
106 | this._refreshIcon(); | 149 | this._refreshIcon(); |
diff --git a/src/models/Service.js b/src/models/Service.js index 5b3ad7bd8..45dc55fce 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -77,7 +77,7 @@ export default class Service { | |||
77 | 77 | ||
78 | @observable restrictionType = null; | 78 | @observable restrictionType = null; |
79 | 79 | ||
80 | @observable isHibernationEnabled = false; | 80 | @observable disableHibernation = false; |
81 | 81 | ||
82 | @observable lastUsed = Date.now(); // timestamp | 82 | @observable lastUsed = Date.now(); // timestamp |
83 | 83 | ||
@@ -136,7 +136,7 @@ export default class Service { | |||
136 | 136 | ||
137 | this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage; | 137 | this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage; |
138 | 138 | ||
139 | this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled; | 139 | this.disableHibernation = data.disableHibernation !== undefined ? data.disableHibernation : this.disableHibernation; |
140 | 140 | ||
141 | this.recipe = recipe; | 141 | this.recipe = recipe; |
142 | 142 | ||
@@ -266,12 +266,17 @@ export default class Service { | |||
266 | })); | 266 | })); |
267 | 267 | ||
268 | this.webview.addEventListener('new-window', (event, url, frameName, options) => { | 268 | this.webview.addEventListener('new-window', (event, url, frameName, options) => { |
269 | openWindow({ | 269 | debug('new-window', event, url, frameName, options); |
270 | event, | 270 | if (event.disposition === 'foreground-tab') { |
271 | url, | 271 | ipcRenderer.send('open-browser-window', event, this.id); |
272 | frameName, | 272 | } else { |
273 | options, | 273 | openWindow({ |
274 | }); | 274 | event, |
275 | url, | ||
276 | frameName, | ||
277 | options, | ||
278 | }); | ||
279 | } | ||
275 | }); | 280 | }); |
276 | 281 | ||
277 | 282 | ||
diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 000000000..9986cdde5 --- /dev/null +++ b/src/routes.js | |||
@@ -0,0 +1,100 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { | ||
5 | Router, Route, IndexRedirect, | ||
6 | } from 'react-router'; | ||
7 | |||
8 | import AppLayoutContainer from './containers/layout/AppLayoutContainer'; | ||
9 | import SettingsWindow from './containers/settings/SettingsWindow'; | ||
10 | import RecipesScreen from './containers/settings/RecipesScreen'; | ||
11 | import ServicesScreen from './containers/settings/ServicesScreen'; | ||
12 | import EditServiceScreen from './containers/settings/EditServiceScreen'; | ||
13 | import AccountScreen from './containers/settings/AccountScreen'; | ||
14 | import TeamScreen from './containers/settings/TeamScreen'; | ||
15 | import EditUserScreen from './containers/settings/EditUserScreen'; | ||
16 | import EditSettingsScreen from './containers/settings/EditSettingsScreen'; | ||
17 | import InviteSettingsScreen from './containers/settings/InviteScreen'; | ||
18 | import SupportFerdiScreen from './containers/settings/SupportScreen'; | ||
19 | import WelcomeScreen from './containers/auth/WelcomeScreen'; | ||
20 | import LoginScreen from './containers/auth/LoginScreen'; | ||
21 | import LockedScreen from './containers/auth/LockedScreen'; | ||
22 | import PasswordScreen from './containers/auth/PasswordScreen'; | ||
23 | import ChangeServerScreen from './containers/auth/ChangeServerScreen'; | ||
24 | import SignupScreen from './containers/auth/SignupScreen'; | ||
25 | import ImportScreen from './containers/auth/ImportScreen'; | ||
26 | import PricingScreen from './containers/auth/PricingScreen'; | ||
27 | import InviteScreen from './containers/auth/InviteScreen'; | ||
28 | import AuthLayoutContainer from './containers/auth/AuthLayoutContainer'; | ||
29 | import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopupScreen'; | ||
30 | import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen'; | ||
31 | import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen'; | ||
32 | import { WORKSPACES_ROUTES } from './features/workspaces'; | ||
33 | import AnnouncementScreen from './features/announcements/components/AnnouncementScreen'; | ||
34 | import { ANNOUNCEMENTS_ROUTES } from './features/announcements'; | ||
35 | |||
36 | import SettingsStore from './stores/SettingsStore'; | ||
37 | |||
38 | export default @inject('stores', 'actions') @observer class Routes extends Component { | ||
39 | render() { | ||
40 | const { | ||
41 | locked, | ||
42 | lockingFeatureEnabled, | ||
43 | } = this.props.stores.settings.app; | ||
44 | |||
45 | const { history } = this.props; | ||
46 | |||
47 | if (lockingFeatureEnabled && locked) { | ||
48 | return ( | ||
49 | <LockedScreen /> | ||
50 | ); | ||
51 | } | ||
52 | |||
53 | return ( | ||
54 | <Router history={history}> | ||
55 | <Route path="/" component={AppLayoutContainer}> | ||
56 | <Route path={ANNOUNCEMENTS_ROUTES.TARGET} component={AnnouncementScreen} /> | ||
57 | <Route path="/settings" component={SettingsWindow}> | ||
58 | <IndexRedirect to="/settings/recipes" /> | ||
59 | <Route path="/settings/recipes" component={RecipesScreen} /> | ||
60 | <Route path="/settings/recipes/:filter" component={RecipesScreen} /> | ||
61 | <Route path="/settings/services" component={ServicesScreen} /> | ||
62 | <Route path="/settings/services/:action/:id" component={EditServiceScreen} /> | ||
63 | <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} /> | ||
64 | <Route path={WORKSPACES_ROUTES.EDIT} component={EditWorkspaceScreen} /> | ||
65 | <Route path="/settings/user" component={AccountScreen} /> | ||
66 | <Route path="/settings/user/edit" component={EditUserScreen} /> | ||
67 | <Route path="/settings/team" component={TeamScreen} /> | ||
68 | <Route path="/settings/app" component={EditSettingsScreen} /> | ||
69 | <Route path="/settings/invite" component={InviteSettingsScreen} /> | ||
70 | <Route path="/settings/support" component={SupportFerdiScreen} /> | ||
71 | </Route> | ||
72 | </Route> | ||
73 | <Route path="/auth" component={AuthLayoutContainer}> | ||
74 | <IndexRedirect to="/auth/welcome" /> | ||
75 | <Route path="/auth/welcome" component={WelcomeScreen} /> | ||
76 | <Route path="/auth/login" component={LoginScreen} /> | ||
77 | <Route path="/auth/server" component={ChangeServerScreen} /> | ||
78 | <Route path="/auth/signup"> | ||
79 | <IndexRedirect to="/auth/signup/form" /> | ||
80 | <Route path="/auth/signup/form" component={SignupScreen} /> | ||
81 | <Route path="/auth/signup/pricing" component={PricingScreen} /> | ||
82 | <Route path="/auth/signup/import" component={ImportScreen} /> | ||
83 | <Route path="/auth/signup/invite" component={InviteScreen} /> | ||
84 | </Route> | ||
85 | <Route path="/auth/password" component={PasswordScreen} /> | ||
86 | <Route path="/auth/logout" component={LoginScreen} /> | ||
87 | </Route> | ||
88 | <Route path="/payment/:url" component={SubscriptionPopupScreen} /> | ||
89 | <Route path="*" component={AppLayoutContainer} /> | ||
90 | </Router> | ||
91 | ); | ||
92 | } | ||
93 | } | ||
94 | |||
95 | Routes.wrappedComponent.propTypes = { | ||
96 | stores: PropTypes.shape({ | ||
97 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | ||
98 | }).isRequired, | ||
99 | history: PropTypes.any.isRequired, | ||
100 | }; | ||
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 96142787e..153fdb2c8 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -33,8 +33,11 @@ const { | |||
33 | const mainWindow = remote.getCurrentWindow(); | 33 | const mainWindow = remote.getCurrentWindow(); |
34 | 34 | ||
35 | const defaultLocale = DEFAULT_APP_SETTINGS.locale; | 35 | const defaultLocale = DEFAULT_APP_SETTINGS.locale; |
36 | |||
37 | const executablePath = isMac ? remote.process.execPath : process.execPath; | ||
36 | const autoLauncher = new AutoLaunch({ | 38 | const autoLauncher = new AutoLaunch({ |
37 | name: 'Ferdi', | 39 | name: 'Ferdi', |
40 | path: executablePath, | ||
38 | }); | 41 | }); |
39 | 42 | ||
40 | const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions'; | 43 | const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions'; |
@@ -324,8 +327,10 @@ export default class AppStore extends Store { | |||
324 | 327 | ||
325 | try { | 328 | try { |
326 | if (enable) { | 329 | if (enable) { |
330 | debug('enabling launch on startup', executablePath); | ||
327 | autoLauncher.enable(); | 331 | autoLauncher.enable(); |
328 | } else { | 332 | } else { |
333 | debug('disabling launch on startup'); | ||
329 | autoLauncher.disable(); | 334 | autoLauncher.disable(); |
330 | } | 335 | } |
331 | } catch (err) { | 336 | } catch (err) { |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 0ad523374..a8d9cc1fb 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -631,7 +631,8 @@ export default class ServicesStore extends Store { | |||
631 | } | 631 | } |
632 | 632 | ||
633 | @action _openWindow({ event }) { | 633 | @action _openWindow({ event }) { |
634 | if (event.disposition !== 'new-window' && event.url !== 'about:blank') { | 634 | if (event.url !== 'about:blank') { |
635 | event.preventDefault(); | ||
635 | this.actions.app.openExternalUrl({ url: event.url }); | 636 | this.actions.app.openExternalUrl({ url: event.url }); |
636 | } | 637 | } |
637 | } | 638 | } |
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index 227eb2145..c50475819 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js | |||
@@ -6,6 +6,7 @@ import localStorage from 'mobx-localstorage'; | |||
6 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES, LOCAL_SERVER } from '../config'; | 6 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES, LOCAL_SERVER } from '../config'; |
7 | import { API } from '../environment'; | 7 | import { API } from '../environment'; |
8 | import { getLocale } from '../helpers/i18n-helpers'; | 8 | import { getLocale } from '../helpers/i18n-helpers'; |
9 | import { hash } from '../helpers/password-helpers'; | ||
9 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; | 10 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; |
10 | import Request from './lib/Request'; | 11 | import Request from './lib/Request'; |
11 | import Store from './lib/Store'; | 12 | import Store from './lib/Store'; |
@@ -56,21 +57,6 @@ export default class SettingsStore extends Store { | |||
56 | }, | 57 | }, |
57 | ); | 58 | ); |
58 | 59 | ||
59 | reaction( | ||
60 | () => this.all.app.locked, | ||
61 | () => { | ||
62 | const { router } = window.ferdi.stores; | ||
63 | if (this.all.app.locked && this.all.app.lockingFeatureEnabled) { | ||
64 | // App just got locked, redirect to unlock screen | ||
65 | router.push('/auth/locked'); | ||
66 | } else if (router.location.pathname.includes('/auth/locked')) { | ||
67 | // App is unlocked but user is still on locked screen | ||
68 | // Redirect to homepage | ||
69 | router.push('/'); | ||
70 | } | ||
71 | }, | ||
72 | ); | ||
73 | |||
74 | // Inactivity lock timer | 60 | // Inactivity lock timer |
75 | let inactivityTimer; | 61 | let inactivityTimer; |
76 | remote.getCurrentWindow().on('blur', () => { | 62 | remote.getCurrentWindow().on('blur', () => { |
@@ -96,15 +82,8 @@ export default class SettingsStore extends Store { | |||
96 | if (this.startup && resp.type === 'app' && resp.data.lockingFeatureEnabled) { | 82 | if (this.startup && resp.type === 'app' && resp.data.lockingFeatureEnabled) { |
97 | this.startup = false; | 83 | this.startup = false; |
98 | process.nextTick(() => { | 84 | process.nextTick(() => { |
99 | // If the app was previously closed unlocked | ||
100 | // we can update the `locked` setting and rely on the reaction to lock at startup | ||
101 | if (!this.all.app.locked) { | 85 | if (!this.all.app.locked) { |
102 | this.all.app.locked = true; | 86 | this.all.app.locked = true; |
103 | } else { | ||
104 | // Otherwise the app previously closed in a locked state | ||
105 | // We can't rely on updating the locked setting for the reaction to be triggered | ||
106 | // So we lock manually | ||
107 | window.ferdi.stores.router.push('/auth/locked'); | ||
108 | } | 87 | } |
109 | }); | 88 | }); |
110 | } | 89 | } |
@@ -301,5 +280,25 @@ export default class SettingsStore extends Store { | |||
301 | 280 | ||
302 | debug('Migrated updates settings'); | 281 | debug('Migrated updates settings'); |
303 | } | 282 | } |
283 | |||
284 | if (!this.all.migration['password-hashing']) { | ||
285 | if (this.stores.settings.app.lockedPassword !== '') { | ||
286 | this.actions.settings.update({ | ||
287 | type: 'app', | ||
288 | data: { | ||
289 | lockedPassword: hash(String(legacySettings.lockedPassword)), | ||
290 | }, | ||
291 | }); | ||
292 | } | ||
293 | |||
294 | this.actions.settings.update({ | ||
295 | type: 'migration', | ||
296 | data: { | ||
297 | 'password-hashing': true, | ||
298 | }, | ||
299 | }); | ||
300 | |||
301 | debug('Migrated updates settings'); | ||
302 | } | ||
304 | } | 303 | } |
305 | } | 304 | } |