59 Commits
2.0.0 ... 2.1.0

Author SHA1 Message Date
Darko Gjorgjijoski
3e52b84fa8 New Crowdin updates (#279)
* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Spanish)

* New translations en.json (Indonesian)

* New translations en.json (Indonesian)

* New translations en.json (Indonesian)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (German)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Japanese)
2025-02-01 10:41:49 +01:00
Darko Gjorgjijoski
d1f45a790b Bump version 2025-02-01 10:41:19 +01:00
Darko Gjorgjijoski
bec0c058a8 Bump version 2025-01-13 02:14:23 +01:00
Darko Gjorgjijoski
d862ee05e9 Refactor Custom Invoice/Estimate PDF Templates (#277)
* Add utility class for managing templates

* Register custom pdf template views location

* Update the make:template command to make use of PdfTemplateUtils

* Update PDF invoice/estimate template controllers

* Register pdf_templates filesystem disk

* Remove unused leftovers

* Reformat with pint
2025-01-13 01:20:13 +01:00
Darko Gjorgjijoski
12d9d6c801 Regenerate IDE Helper Assets (#274)
* Add back laravel/ui package

* Fix wrong Closure import

* Regenerate ide-helper files
2025-01-12 20:48:06 +01:00
Darko Gjorgjijoski
e9e52c60a7 Reformat with pint 2025-01-12 18:37:08 +01:00
Darko Gjorgjijoski
34b9f52af7 Upgrade Laravel and other third-party packages 2025-01-12 18:22:51 +01:00
Darko Gjorgjijoski
fcf64c0b26 Upgrade Vite, Vue and other thrid-party packages 2025-01-12 17:38:54 +01:00
Darko Gjorgjijoski
7e2d257f7d Update caniuse-lite package 2025-01-12 17:11:50 +01:00
Darko Gjorgjijoski
c617f7d169 Fix: PDF Template command (#272)
* Fix `make:template` command

* Fix issue related to Vite assets

* Reformat code

---------

Co-authored-by: Steven Rombauts <steven@kotuha.be>
2025-01-12 16:19:54 +01:00
Darko Gjorgjijoski
1804481fc6 New Crowdin updates (#262)
* New translations en.json (Indonesian)

* New translations en.json (Turkish)

* New translations en.json (Hindi)

* New translations en.json (Hindi)

* New translations en.json (Persian)

* New translations en.json (Chinese Traditional)

* Update source file en.json

* New translations en.json (Dutch)

* New translations en.json (Czech)

* New translations en.json (Indonesian)

* New translations en.json (Turkish)

* New translations en.json (Hindi)

* New translations en.json (Persian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovak)

* New translations en.json (Slovenian)

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Thai)

* New translations en.json (Croatian)

* New translations en.json (Latvian)

* New translations en.json (Serbian (Latin))

* New translations en.json (Dutch)

* New translations en.json (Czech)

* New translations en.json (Indonesian)

* New translations en.json (Turkish)

* New translations en.json (Hindi)

* New translations en.json (Persian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovak)

* New translations en.json (Slovenian)

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Thai)

* New translations en.json (Croatian)

* New translations en.json (Latvian)

* New translations en.json (Serbian (Latin))

* Update source file en.json
2025-01-12 15:09:28 +01:00
mchev
9bed81fe8f Handle demo version of the app (#256) 2025-01-12 13:56:52 +01:00
Darko Gjorgjijoski
f52b73f517 Invoice time support (#269)
* Changed invoice date to datetime

* Fixed code style errors

* Update TimeFormatsController.php

* Update TimeFormatter.php

* Update TimeFormatsController namespace

* Fix missing comma in language file

* Fix formatting

---------

Co-authored-by: troky <troky2001@yahoo.com>
2025-01-12 13:32:47 +01:00
Mohamed Safouan Besrour
32e03b98a3 Update CurrenciesTableSeeder.php (#258) 2025-01-12 11:42:12 +01:00
mchev
3f560a1de2 Add Amount Paid and Amount Due to Invoice PDF (#248)
* Display payment status on invoices

* Update en.json
2025-01-12 11:36:36 +01:00
mchev
ef9adbd6c9 Adding sent and viewed field to payload (#247) 2025-01-12 11:27:29 +01:00
Loduis Madariaga Barrios
969cbe9ad8 fix: update company info on array of companies. (#227) 2025-01-12 11:02:58 +01:00
Darko Gjorgjijoski
6031f0dbdd Module paths (#268)
* refactor: Update file paths for stub files for module creation (#144)

---------

Co-authored-by: Dominik Hendrix <dominik.hendrix@g-fittings.com>

* Revert unrelated change

---------

Co-authored-by: Dominik Hendrix <all@dhendrix.de>
Co-authored-by: Dominik Hendrix <dominik.hendrix@g-fittings.com>
2025-01-12 10:49:04 +01:00
Loduis Madariaga Barrios
06a71fc7b3 fix: Corrects and simplifies password visibility icon logic. (#222) 2025-01-12 10:48:34 +01:00
Darko Gjorgjijoski
fd1c7be1f8 New Crowdin updates (#241)
* New translations en.json (Slovak)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Spanish)

* New translations en.json (Indonesian)

* New translations en.json (German)

* New translations en.json (Arabic)

* New translations en.json (Arabic)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Dutch)

* New translations en.json (Czech)

* New translations en.json (Czech)
2025-01-05 12:06:14 +01:00
Darko Gjorgjijoski
c466d51fe0 New Crowdin updates (#235)
* New translations en.json (Swedish)

* New translations en.json (Croatian)

* New translations en.json (Russian)

* New translations en.json (French)

* New translations en.json (Ukrainian)

* New translations en.json (Slovak)

* New translations en.json (Romanian)

* New translations en.json (Spanish)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (Czech)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Dutch)

* New translations en.json (Polish)

* New translations en.json (Slovenian)

* New translations en.json (Turkish)

* New translations en.json (Chinese Traditional)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Indonesian)

* New translations en.json (Persian)

* New translations en.json (Thai)

* New translations en.json (Latvian)

* New translations en.json (Hindi)

* New translations en.json (Serbian (Latin))
2024-12-03 18:39:00 +01:00
OniriCorpe
e8dccb178b Specifying that a custom frequency should be in the cron format (#231) 2024-12-03 15:27:21 +01:00
Darko Gjorgjijoski
f5b36d7e6c New Crowdin updates (#232)
* New translations en.json (French)

* New translations en.json (Croatian)

* New translations en.json (Ukrainian)

* New translations en.json (Ukrainian)

* New translations en.json (Ukrainian)

* New translations en.json (Slovak)
2024-12-03 15:27:09 +01:00
OniriCorpe
a32bbb6268 Fixes receipt view (#234)
The #185 modifications were also necessary here
2024-12-03 15:26:05 +01:00
Darko Gjorgjijoski
9599814ae5 New Crowdin updates (#225)
* New translations en.json (Swedish)

* New translations en.json (Croatian)

* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (Croatian)

* New translations en.json (Russian)

* New translations en.json (French)

* New translations en.json (French)
2024-11-29 21:29:22 +01:00
Darko Gjorgjijoski
0d14da93d0 New Crowdin updates (#221)
* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (Greek)

* New translations en.json (Greek)
2024-11-18 01:21:13 +01:00
Loduis Madariaga Barrios
298c170867 feat(infrastructure): improve htaccess configuration. (#214) 2024-11-17 00:18:35 +01:00
Rihards Simanovičs
b49228eabf chore: Update Issue Template (#215)
* chore: update issue template

Signed-off-by: Rihards Simanovics <rihards.s@griffin-web.studio>

* chore: correct spelling in issue template

Signed-off-by: Rihards Simanovics <rihards.s@griffin-web.studio>

* fix: adjust render for some textarea fields and add a reproduction step

* fix: remove render from markdown fields

looks like github gets confused as all textarea fields are markdown by the default

* style: add comments and correct labels

* feat(github): add code quality issue template

* refactor: remove direct references to Files

From template fields, descriptions, and placeholders

* refactor(github): convert feature request template to issue form

---------

Signed-off-by: Rihards Simanovics <rihards.s@griffin-web.studio>
2024-11-17 00:18:18 +01:00
Darko Gjorgjijoski
99ada6fbcc New Crowdin updates (#217)
* New translations en.json (Japanese)

* New translations en.json (Japanese)
2024-11-17 00:17:37 +01:00
Darko Gjorgjijoski
ed4a59574c Customer tax id validation (#220)
* Remove tax_id validation

* Remove validation leftovers
2024-11-17 00:17:25 +01:00
Darko Gjorgjijoski
be2e1df442 Add 'Database Overwrtie' during install for SQLite type (#219) 2024-11-17 00:07:44 +01:00
Darko Gjorgjijoski
ddca5a7b6d New translations en.json (Dutch) (#211) 2024-11-11 12:24:48 +01:00
Darko Gjorgjijoski
51d001aa0f New Crowdin updates (#209)
* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (Czech)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Dutch)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovak)

* New translations en.json (Slovenian)

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Indonesian)

* New translations en.json (Persian)

* New translations en.json (Thai)

* New translations en.json (Croatian)

* New translations en.json (Latvian)

* New translations en.json (Hindi)

* New translations en.json (Serbian (Latin))

* New translations en.json (Turkish)
2024-11-09 21:39:07 +01:00
Darko Gjorgjijoski
5d817b5c45 Ignore the translations branch from CI 2024-11-09 15:22:23 +01:00
Ali Çömez | Slaweally
ac2c73829c Update tr.json (#205) 2024-11-09 15:01:57 +01:00
Loduis Madariaga Barrios
317f763a85 chore(wizard): add missing translations for Spanish version in setup wizard (#207) 2024-11-09 14:38:20 +01:00
Joël Kuijper
e112ed5875 Add missing dutch translations (#208) 2024-11-09 14:38:02 +01:00
Darko Gjorgjijoski
84c10264ed Add missing strings lost in merge (#200)
Issue #199
2024-11-02 21:47:22 +01:00
Darko Gjorgjijoski
b143642056 New Crowdin updates (#188)
* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Croatian)

* New translations en.json (Croatian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Croatian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Spanish)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (German)

* New translations en.json (Japanese)

* New translations en.json (Spanish)

* New translations en.json (Croatian)

* New translations en.json (Spanish)

* New translations en.json (Japanese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (German)

* New translations en.json (Croatian)

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (Czech)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Dutch)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovak)

* New translations en.json (Slovenian)

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Vietnamese)

* New translations en.json (Indonesian)

* New translations en.json (Persian)

* New translations en.json (Thai)

* New translations en.json (Latvian)

* New translations en.json (Hindi)

* New translations en.json (Serbian (Latin))

* Update source file en.json
2024-11-02 12:49:04 +01:00
mchev
967c225df9 Merge pull request #198 from mchev/invoice_cancellation
Support for Zero and Negative Item Quantities on Invoices
2024-11-02 12:20:55 +01:00
mchev
e1a0a2d8e4 Merge pull request #138 from IDerr/develop
Add VAT and Tax into PDF Trait
2024-11-02 12:19:43 +01:00
mchev
748168ffa5 Merge pull request #189 from loduis/master
enhance(wizard): update translations, refine icons, and add automated…
2024-11-02 10:36:52 +01:00
mchev
4db243e136 Merge branch 'master' into master 2024-11-02 10:31:53 +01:00
mchev
bc0c8d5348 Merge pull request #166 from mchev/customer_tax_id
Include a Tax ID field in both customer creation and invoices
2024-11-02 10:28:49 +01:00
mchev
6583569b1c Merge pull request #190 from mchev/issue_71
Refactor editor and allow links
2024-11-02 10:28:30 +01:00
mchev
134c99369e Merge pull request #186 from mchev/issue_181
Fix table data not refreshing properly (keys)
2024-11-02 10:28:12 +01:00
Loduis Madariaga
f2ae4e17c8 enhance(wizard): update translations, refine icons, and add automated requirement verification 2024-10-17 07:24:17 -05:00
Martin Chevignard
4ff62c0adf Refactor editor and allow links 2024-10-17 11:16:11 +02:00
Darko Gjorgjijoski
2604db32ce New Crowdin updates (#154)
* New translations en.json (Spanish)

* New translations en.json (Finnish)

* New translations en.json (French)

* New translations en.json (German)

* New translations en.json (Romanian)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (Czech)

* New translations en.json (Greek)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Dutch)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovak)

* New translations en.json (Slovenian)

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Indonesian)

* New translations en.json (Persian)

* New translations en.json (Thai)

* New translations en.json (Croatian)

* New translations en.json (Latvian)

* New translations en.json (Hindi)

* New translations en.json (Serbian (Latin))

* New translations en.json (Russian)

* New translations en.json (Spanish)

* New translations en.json (Spanish)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Spanish)

* New translations en.json (Japanese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Slovak)

* New translations en.json (Swedish)

* New translations en.json (Vietnamese)

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Arabic)

* New translations en.json (Bulgarian)

* New translations en.json (Czech)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Italian)

* New translations en.json (Lithuanian)

* New translations en.json (Macedonian)

* New translations en.json (Dutch)

* New translations en.json (Polish)

* New translations en.json (Russian)

* New translations en.json (Slovenian)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Traditional)

* New translations en.json (Indonesian)

* New translations en.json (Persian)

* New translations en.json (Thai)

* New translations en.json (Croatian)

* New translations en.json (Latvian)

* New translations en.json (Hindi)

* New translations en.json (Serbian (Latin))

* Update source file en.json

* New translations en.json (Japanese)

* New translations en.json (Japanese)
2024-10-16 15:18:26 +02:00
Darko Gjorgjijoski
01d32d50b5 Exclude crowdin branch from workflows 2024-10-16 00:54:02 +02:00
SalvaGR
0c86563375 fix: missing values in en.json translation (#179) 2024-10-15 20:53:08 +02:00
mchev
33c2949a7b Fix carbon int val (#185) 2024-10-15 20:51:17 +02:00
mchev
547a2be0a3 Update readme.md 2024-10-15 19:14:55 +02:00
Martin Chevignard
59b43fa258 Public Invoice View fix 2024-10-15 17:55:56 +02:00
Martin Chevignard
168b741936 Upadate filters with laravel best practices 2024-10-15 16:20:04 +02:00
SpeedX
022769ba38 Fix Logo render in Payment PDF (#162)
* Fix logo render in Payment PDF

* Fix CSS to make it consistent with other templates
2024-10-14 11:47:10 +02:00
mchev
068f48568e Fix carbon dates on custom fields value (#178) 2024-10-11 13:17:01 +02:00
Martin Chevignard
03b9defeb1 Customers tax id field 2024-10-04 12:07:29 +02:00
mchev
dd98df1c77 Fix long text on dropdown items (#157) 2024-09-30 20:15:56 +02:00
151 changed files with 30335 additions and 14222 deletions

View File

@@ -1,26 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Please complete the following information:**
- InvoiceShelf version:
- PHP version:
- Database type and version:
**Optional info**
- OS: [e.g. Ubuntu]
- Browser: [e.g. chrome, safari]

202
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,202 @@
name: Bug report
description: Template for bug reports
labels:
- bug
- triage
projects: ["InvoiceShelf/2"]
assignees:
- rihards-simanovics
body:
# Ask user to confirm they've tried to fix or research the issue before
# posting a bug report.
- type: checkboxes
id: confirm-read-documentation
attributes:
label: Issue filing pre-requisites
description: "Prior to filing an issue please confirm that:"
options:
- label: I've checked the documentation.
required: true
- label: I've looked for similar issues both Open and Closed.
required: true
- label: >-
Ive tried clearing both cache and cookies in my browser or tried
opening the app in the Incognito/InPrivate window.
required: true
# Thank users for taking time to submit a bug report
- type: markdown
attributes:
value: >-
If you did all of the above, we first would like to thank you for taking
the time to fill out this bug report, it will help us tremendously to
find and fix the issue sooner!
# Description fo the bug
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: >-
When doing `x`, `y`, and `z` in that order, an error occurs, but when x,
z and then y is done, the error does not occur.
validations:
required: true
# Reproduction steps
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce the issue
description: A clear step-by-step explanation of how to reproduce your issue
placeholder: >-
## Produces an error:
1. Do X;
2. Do Y;
3. Do Z;
## Works fine:
4. Do X;
5. Do Z;
6. Do Y.
validations:
required: true
# Expected Behaviour
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
placeholder: doing `x`, `y`, and `z` in that order should not generate an error.
validations:
required: true
# Actual Behaviour
- type: textarea
id: actual-behavior
attributes:
label: Actual behavior
description: A clear and concise description of what actually happen.
placeholder: doing `x`, `y`, and `z` in that order generate an error.
validations:
required: true
# Section break
- type: markdown
attributes:
value: |-
## Envirment
Now lets collect some information about your environment.
# App Version
- type: input
id: invoiceshelf-version
attributes:
label: InvoiceShelf version
placeholder: v0.0.0
validations:
required: true
# PHP Version
- type: input
id: php-version
attributes:
label: PHP version
placeholder: v0.0.0
validations:
required: true
# DB Type
- type: input
id: database-type
attributes:
label: Database type
placeholder: MariaDB / MySQL / PostreSQL / SQLite
validations:
required: true
# DB Version
- type: input
id: db-version
attributes:
label: Database version
placeholder: v0.0.0
validations:
required: true
# Web Browser
- type: input
id: web-browser
attributes:
label: Web Browser
placeholder: "Firefox / Safari / or any other (chromium based browser)"
# OS Version
- type: input
id: server-os
attributes:
label: Server OS
description: If Linux please make sure to provide both distro name and it's version
placeholder: Windows / Linux (e.g. Ubuntu 24.04)
# Associated Logs
- type: markdown
attributes:
value: >-
## Logs
last but not least, could you please take some time to get us the logs
for:
# Log Reverse proxy
- type: textarea
id: log-rev-proxy
attributes:
label: Reverse-proxy logs
description: >-
Please provide logs from your Apache, Nginx, Traefik, or any other
reverse proxy application.
placeholder: >-
[2015-02-04 10:00:00] production.INFO: Laravel 5.0 released. The world rejoices.
[2015-12-03 12:00:00] production.INFO: PHP 7.0 introduced scalar type declarations. Minds blown.
[2016-05-15 14:00:00] production.INFO: Composer installed new dependencies. Dependency hell avoided.
[2017-08-20 16:00:00] production.INFO: Artisan command executed: migrate. Smooth sailing.
[2018-01-10 09:00:00] production.INFO: User login successful.
[2018-01-10 09:05:00] production.ERROR: Database connection failed. Did you try turning it off and on again?
[2018-01-10 09:10:00] production.WARNING: Deprecated function used in UserController.php. Time to refactor, again.
[2018-01-10 09:15:00] production.ERROR: Uncaught Exception: Division by zero. Oops, math is hard.
[2018-01-10 09:20:00] production.INFO: User logout successful. See you later, alligator.
[2019-03-25 11:00:00] production.INFO: Cache cleared. Fresh start!
[2019-06-30 13:00:00] production.ERROR: Syntax error. Missing semicolon strikes again.
[2020-09-10 15:00:00] production.INFO: User registered. Welcome aboard!
[2021-11-05 17:00:00] production.WARNING: Low disk space. Time to clean up.
[2022-12-20 19:00:00] production.INFO: Server rebooted. All systems go.
[2024-11-14 18:56:20] production.INFO: Unexpected item in the bagging area. Please wait for assistance.
render: irc logs
# PHP/Laravel Logs
- type: textarea
id: log-laravel
attributes:
label: Laravel/PHP logs
description: Please provide logs from either PHP or Laravel or both.
placeholder: >-
2023-04-12 10:15:32 [NGINX] 172.16.0.5 - - [12/Apr/2023:10:15:32 +0000] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
2023-04-12 10:15:33 [NGINX] 172.16.0.7 - - [12/Apr/2023:10:15:33 +0000] "POST /login HTTP/1.1" 302 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"
2023-04-12 10:15:34 [NGINX] 172.16.0.9 - - [12/Apr/2023:10:15:34 +0000] "GET /about HTTP/1.1" 200 2048 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
2023-04-12 10:15:35 [NGINX] 172.16.0.11 - - [12/Apr/2023:10:15:35 +0000] "PUT /api/v1/users/123 HTTP/1.1" 200 - "https://example.com/profile" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
2023-04-12 10:15:36 [NGINX] 172.16.0.13 - - [12/Apr/2023:10:15:36 +0000] "DELETE /api/v1/products/456 HTTP/1.1" 204 - "-" "Dalvik/2.1.0 (Linux; U; Android 10; Pixel 4 Build/QD1A.190821.014.C2)"
2023-04-12 10:15:37 [NGINX] 172.16.0.15 - - [12/Apr/2023:10:15:37 +0000] "GET /easter-egg HTTP/1.1" 200 42 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.3"
render: irc logs
# Special thanks
- type: markdown
attributes:
value: >-
This template was generated with [Issue Forms
Creator](https://issue-forms-creator.netlify.app)

View File

@@ -0,0 +1,73 @@
# Big thanks to https://github.com/files-community/Files/ for a template of the code_quality_issue
name: Code Quality Issue
description: Create a code quality issue to help InvoiceShelf keep a clean codebase
labels:
- code quality
- triage
projects: ["InvoiceShelf/2"]
assignees:
- rihards-simanovics
body:
# Tip to warn of checking for existing issues
- type: markdown
attributes:
value: >
> [!TIP]
> Have you checked for similar code quality issues? There's a
possibility your suggestion is already being tracked. Please do a
thorough search before creating a new issue.
# Issue body
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the code quality issue is.
validations:
required: true
# Related code
- type: textarea
id: code-in-question
attributes:
label: The code in question
description: >-
A list of the different InvoiceShelf and/or areas of the code concerned by the issue.
validations:
required: true
# Gains
- type: textarea
id: gains
attributes:
label: Gains
description: What would fixing this code quality issue bring to the source code?
value: |
- eg. A better readability.
- eg. Uncoupling concepts X and Y.
- eg. Clarifying the responsibility of class C.
validations:
required: true
# Requirements
- type: textarea
id: requirements
attributes:
label: Requirements
description: Describe all the requirements to solve the code quality issue.
value: |
- eg. Using a specific design pattern.
- eg. Separating Interface I into three new interfaces I1, I2 and I3.
- eg. Regrouping the duplicated process into a new helper.
# Remarks
- type: textarea
id: comments
attributes:
label: Comments
description: >-
Additional information, comments or screenshots about the code quality
issue.

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://docs.invoiceshelf.com/
about: App documentation.
- name: Translation issue
url: https://crowdin.com/project/invoiceshelf
about: Help improve translations on Crowdin.
- name: Question & Discussion
url: https://discord.gg/hwg2FtwWHW
about: Post your questions and join the discussion. You can participate in chats on every channel.

View File

@@ -1,17 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

View File

@@ -0,0 +1,74 @@
# Big thanks to https://github.com/files-community/Files/ for a template of the feature_request
name: Feature Request
labels:
- feature request
- triage
projects: ["InvoiceShelf/2"]
assignees:
- rihards-simanovics
description: >-
This project thrives from differentiation from competing apps. Suggest an idea
for InvoiceShelf.
body:
# Tip to warn of checking for existing issues
- type: markdown
attributes:
value: >
> [!TIP]
>Have you checked for similar feature requests? There's a possibility
your suggestion is already being tracked. Please do a thorough search
before creating a new issue.
# Description
- type: textarea
id: what-feature
attributes:
label: What feature or improvement do you think would benefit InvoiceShelf?
description: Please include your use case
validations:
required: true
# Tooltip about Requirements
- type: markdown
attributes:
value: >
---
Please include a list changes required to make this improvement. A good
rule of thumb is to start your proposal with no more than 7 high-level
requirements.
# Requirements
- type: textarea
id: requirements
attributes:
label: Requirements
description: Describe all the requirements to make your idea happen.
value: |
- This proposal will accomplish X
- This proposal will accomplish Y
- This proposal will accomplish Z
validations:
required: true
# InvoiceShelf Version
- type: input
id: invoiceshelf_version
attributes:
label: App Version
description: Which version of InvoiceShelf are you using?
placeholder: v0.0.0
validations:
required: true
# Additional Comments
- type: textarea
id: comments
attributes:
label: Comments
description: >-
Additional information, comments or screenshots about the feature
request.

View File

@@ -7,11 +7,15 @@ on:
- '**/*.md'
- 'public/build/*.js'
- 'public/build/**/*.js'
branches-ignore:
- 'translations'
pull_request:
paths-ignore:
- '**/*.md'
- 'public/build/*.js'
- 'public/build/**/*.js'
branches-ignore:
- 'translations'
# Allow manually triggering the workflow.
workflow_dispatch:

File diff suppressed because it is too large Load Diff

1629
_ide_helper_models.php Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,8 +2,11 @@
namespace App\Console\Commands;
use App\Space\PdfTemplateUtils;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class CreateTemplateCommand extends Command
{
@@ -37,26 +40,53 @@ class CreateTemplateCommand extends Command
public function handle(): int
{
$templateName = $this->argument('name');
$type = $this->option('type');
$templateType = $this->option('type');
if (! $type) {
$type = $this->choice('Create a template for?', ['invoice', 'estimate']);
if (! $templateType) {
$templateType = $this->choice('Create a template for?', ['invoice', 'estimate']);
}
if (Storage::disk('views')->exists("/app/pdf/{$type}/{$templateName}.blade.php")) {
if (PdfTemplateUtils::customTemplateFileExists($templateType, sprintf('%s.blade.php', $templateName))) {
$this->info('Template with given name already exists.');
return 0;
return self::INVALID;
}
Storage::disk('views')->copy("/app/pdf/{$type}/{$type}1.blade.php", "/app/pdf/{$type}/{$templateName}.blade.php");
copy(public_path("/build/img/PDF/{$type}1.png"), public_path("/build/img/PDF/{$templateName}.png"));
copy(resource_path("/static/img/PDF/{$type}1.png"), resource_path("/static/img/PDF/{$templateName}.png"));
if (! PdfTemplateUtils::toCustomTemplateMarkupFile(
Str::replace(
sprintf('app.pdf.%s', $templateType),
sprintf('pdf_templates::%s', $templateType),
Storage::disk('views')->get("/app/pdf/{$templateType}/{$templateType}1.blade.php"),
),
$templateType,
$templateName
)) {
$this->error(sprintf('Unable to create %s template.', ucfirst($templateType)));
$path = resource_path("views/app/pdf/{$type}/{$templateName}.blade.php");
$type = ucfirst($type);
$this->info("{$type} Template created successfully at ".$path);
return self::FAILURE;
}
return 0;
PdfTemplateUtils::toCustomTemplateImageFile(
File::get(resource_path("static/img/PDF/{$templateType}1.png")),
$templateType,
$templateName,
);
if (! PdfTemplateUtils::customTemplateFileExists($templateType, 'partials/table.blade.php')) {
PdfTemplateUtils::toCustomTemplateFile(
Storage::disk('views')->get("/app/pdf/{$templateType}/partials/table.blade.php"),
$templateType,
'partials/table.blade.php'
);
}
$this->info(
sprintf('%s Template created successfully at %s',
ucfirst($templateType),
PdfTemplateUtils::getCustomTemplateFilePath($templateType, sprintf('%s.blade.php', $templateName))
)
);
return self::SUCCESS;
}
}

View File

@@ -6,6 +6,8 @@ use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Support\Facades\Artisan;
use function Laravel\Prompts\confirm;
class ResetApp extends Command
{
use ConfirmableTrait;
@@ -39,30 +41,49 @@ class ResetApp extends Command
*
* @return mixed
*/
/**
* Execute the console command to reset the application.
*
* This will:
* 1. Enable maintenance mode to prevent access during reset
* 2. Fresh migrate the database with initial seeds
* 3. Seed demo data using DemoSeeder
* 4. Clear all application caches
* 5. Disable maintenance mode
*
* The --force flag can be used to skip confirmation prompt.
*/
public function handle(): void
{
if (! $this->confirmToProceed()) {
return;
if (! $this->option('force')) {
if (! confirm('Are you sure you want to reset the application?')) {
$this->components->error('Reset cancelled');
return;
}
}
$this->info('Running migrate:fresh');
// Enable maintenance mode to prevent access during reset
$this->info('Activating maintenance mode...');
Artisan::call('down');
// Fresh migrate database and run initial seeds
$this->info('Running migrate:fresh');
Artisan::call('migrate:fresh --seed --force');
// Seed demo data
$this->info('Seeding database');
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$path = base_path('.env');
// Clear all application caches
$this->info('Clearing cache...');
Artisan::call('optimize:clear');
if (file_exists($path)) {
file_put_contents($path, str_replace(
'APP_DEBUG=true',
'APP_DEBUG=false',
file_get_contents($path)
));
}
// Disable maintenance mode
$this->info('Deactivating maintenance mode...');
Artisan::call('up');
$this->info('App has been reset successfully');
$this->info('App reset completed successfully!');
}
}

View File

@@ -80,7 +80,7 @@ class BackupsController extends ApiController
$this->authorize('manage backups');
$validated = $request->validate([
'path' => ['required', new PathToZip()],
'path' => ['required', new PathToZip],
]);
$backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name'));

View File

@@ -18,7 +18,7 @@ class DownloadBackupController extends ApiController
$this->authorize('manage backups');
$validated = $request->validate([
'path' => ['required', new PathToZip()],
'path' => ['required', new PathToZip],
]);
$backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name'));

View File

@@ -24,7 +24,7 @@ class CloneEstimateController extends Controller
$date = Carbon::now();
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($estimate)
->setCompany($estimate->company_id)
->setCustomer($estimate->customer_id)

View File

@@ -42,7 +42,7 @@ class ConvertEstimateController extends Controller
$due_date = Carbon::now()->addDays($dueDateDays)->format('Y-m-d');
}
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($invoice)
->setCompany($estimate->company_id)
->setCustomer($estimate->customer_id)

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\V1\Admin\Estimate;
use App\Http\Controllers\Controller;
use App\Models\Estimate;
use App\Space\PdfTemplateUtils;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class EstimateTemplatesController extends Controller
@@ -11,13 +13,13 @@ class EstimateTemplatesController extends Controller
/**
* Handle the incoming request.
*
* @return \Illuminate\Http\Response
* @return JsonResponse
*/
public function __invoke(Request $request)
{
$this->authorize('viewAny', Estimate::class);
$estimateTemplates = Estimate::estimateTemplates();
$estimateTemplates = PdfTemplateUtils::getFormattedTemplates('estimate');
return response()->json([
'estimateTemplates' => $estimateTemplates,

View File

@@ -20,7 +20,7 @@ class NextNumberController extends Controller
{
$key = $request->key;
$nextNumber = null;
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setCompany($request->header('company'))
->setCustomer($request->userId);

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\V1\Admin\General;
use App\Http\Controllers\Controller;
use App\Space\TimeFormatter;
use Illuminate\Http\Request;
class TimeFormatsController extends Controller
{
/**
* Handle the incoming request.
*
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
return response()->json([
'time_formats' => TimeFormatter::get_list(),
]);
}
}

View File

@@ -24,7 +24,7 @@ class CloneInvoiceController extends Controller
$date = Carbon::now();
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($invoice)
->setCompany($invoice->company_id)
->setCustomer($invoice->customer_id)
@@ -46,6 +46,16 @@ class CloneInvoiceController extends Controller
$exchange_rate = $invoice->exchange_rate;
$dateFormat = 'Y-m-d';
$invoiceTimeEnabled = CompanySetting::getSetting(
'invoice_use_time',
$request->header('company')
);
if ($invoiceTimeEnabled === 'YES') {
$dateFormat .= ' H:i';
}
$newInvoice = Invoice::create([
'invoice_date' => $date->format('Y-m-d'),
'due_date' => $due_date,

View File

@@ -4,6 +4,9 @@ namespace App\Http\Controllers\V1\Admin\Invoice;
use App\Http\Controllers\Controller;
use App\Models\Invoice;
use App\Space\PdfTemplateUtils;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class InvoiceTemplatesController extends Controller
@@ -11,13 +14,16 @@ class InvoiceTemplatesController extends Controller
/**
* Handle the incoming request.
*
* @return \Illuminate\Http\Response
*
* @return JsonResponse
*
* @throws AuthorizationException
*/
public function __invoke(Request $request)
{
$this->authorize('viewAny', Invoice::class);
$invoiceTemplates = Invoice::invoiceTemplates();
$invoiceTemplates = PdfTemplateUtils::getFormattedTemplates('invoice');
return response()->json([
'invoiceTemplates' => $invoiceTemplates,

View File

@@ -21,12 +21,11 @@ class InvoicesController extends Controller
{
$this->authorize('viewAny', Invoice::class);
$limit = $request->has('limit') ? $request->limit : 10;
$limit = $request->input('limit', 10);
$invoices = Invoice::whereCompany()
->join('customers', 'customers.id', '=', 'invoices.customer_id')
->applyFilters($request->all())
->select('invoices.*', 'customers.name')
->with('customer')
->latest()
->paginateData($limit);

View File

@@ -13,7 +13,7 @@ class AppDomainController extends Controller
{
Artisan::call('optimize:clear');
$environmentManager = new EnvironmentManager();
$environmentManager = new EnvironmentManager;
$results = $environmentManager->saveDomainVariables($request);

View File

@@ -38,6 +38,15 @@ class CompanySettingRequest extends FormRequest
'carbon_date_format' => [
'required',
],
'moment_time_format' => [
'required',
],
'carbon_time_format' => [
'required',
],
'invoice_use_time' => [
'required',
],
];
}
}

View File

@@ -49,8 +49,10 @@ class CustomerRequest extends FormRequest
'prefix' => [
'nullable',
],
'tax_id' => [
'nullable',
],
'enable_portal' => [
'boolean',
],
'currency_id' => [
@@ -133,6 +135,7 @@ class CustomerRequest extends FormRequest
'password',
'phone',
'prefix',
'tax_id',
'company_name',
'contact_name',
'website',

View File

@@ -49,11 +49,10 @@ class InvoicesRequest extends FormRequest
'required',
],
'sub_total' => [
'integer',
'numeric',
'required',
],
'total' => [
'integer',
'numeric',
'max:999999999999',
'required',
@@ -83,7 +82,7 @@ class InvoicesRequest extends FormRequest
'required',
],
'items.*.price' => [
'integer',
'numeric',
'required',
],
];
@@ -112,7 +111,7 @@ class InvoicesRequest extends FormRequest
return $rules;
}
public function getInvoicePayload()
public function getInvoicePayload(): array
{
$company_currency = CompanySetting::getSetting('currency', $this->header('company'));
$current_currency = $this->currency_id;
@@ -128,6 +127,8 @@ class InvoicesRequest extends FormRequest
'tax_per_item' => CompanySetting::getSetting('tax_per_item', $this->header('company')) ?? 'NO ',
'discount_per_item' => CompanySetting::getSetting('discount_per_item', $this->header('company')) ?? 'NO',
'due_amount' => $this->total,
'sent' => (bool) $this->sent ?? false,
'viewed' => (bool) $this->viewed ?? false,
'exchange_rate' => $exchange_rate,
'base_total' => $this->total * $exchange_rate,
'base_discount_val' => $this->discount_val * $exchange_rate,

View File

@@ -3,6 +3,7 @@
namespace App\Http\Resources;
use App\Models\CompanySetting;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class CustomFieldValueResource extends JsonResource
@@ -48,11 +49,11 @@ class CustomFieldValueResource extends JsonResource
}
if ($key == 'date_time_answer') {
return $answer->format('Y-m-d H:i');
return Carbon::parse($answer)->format('Y-m-d H:i');
}
if ($key == 'date_answer') {
return $answer->format(CompanySetting::getSetting('carbon_date_format', $this->company_id));
return Carbon::parse($answer)->format(CompanySetting::getSetting('carbon_date_format', $this->company_id));
}
return $answer;

View File

@@ -30,6 +30,7 @@ class CustomerResource extends JsonResource
'formatted_created_at' => $this->formattedCreatedAt,
'avatar' => $this->avatar,
'prefix' => $this->prefix,
'tax_id' => $this->tax_id,
'billing' => $this->when($this->billingAddress()->exists(), function () {
return new AddressResource($this->billingAddress);
}),

View File

@@ -35,6 +35,7 @@ class CustomerResource extends JsonResource
'due_amount' => $this->due_amount,
'base_due_amount' => $this->base_due_amount,
'prefix' => $this->prefix,
'tax_id' => $this->tax_id,
'billing' => $this->when($this->billingAddress()->exists(), function () {
return new AddressResource($this->billingAddress);
}),

View File

@@ -227,6 +227,9 @@ class Company extends Model implements HasMedia
'fiscal_year' => '1-12',
'carbon_date_format' => 'Y/m/d',
'moment_date_format' => 'YYYY/MM/DD',
'carbon_time_format' => 'H:i',
'moment_time_format' => 'HH:mm',
'invoice_use_time' => 'NO',
'notification_email' => 'noreply@invoiceshelf.com',
'notify_invoice_viewed' => 'NO',
'notify_estimate_viewed' => 'NO',

View File

@@ -20,10 +20,10 @@ class EmailLog extends Model
public function isExpired()
{
$linkexpiryDays = CompanySetting::getSetting('link_expiry_days', $this->mailable()->get()->toArray()[0]['company_id']);
$linkExpiryDays = (int) CompanySetting::getSetting('link_expiry_days', $this->mailable()->get()->toArray()[0]['company_id']);
$checkExpiryLinks = CompanySetting::getSetting('automatically_expire_public_links', $this->mailable()->get()->toArray()[0]['company_id']);
$expiryDate = $this->created_at->addDays($linkexpiryDays);
$expiryDate = $this->created_at->addDays($linkExpiryDays);
if ($checkExpiryLinks == 'YES' && Carbon::now()->format('Y-m-d') > $expiryDate->format('Y-m-d')) {
return true;

View File

@@ -5,6 +5,7 @@ namespace App\Models;
use App;
use App\Mail\SendEstimateMail;
use App\Services\SerialNumberFormatter;
use App\Space\PdfTemplateUtils;
use App\Traits\GeneratesPdfTrait;
use App\Traits\HasCustomFieldsTrait;
use Barryvdh\DomPDF\Facade\Pdf as PDF;
@@ -14,8 +15,6 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Vite;
use Illuminate\Support\Str;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
@@ -227,7 +226,7 @@ class Estimate extends Model implements HasMedia
$estimate = self::create($data);
$estimate->unique_hash = Hashids::connection(Estimate::class)->encode($estimate->id);
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($estimate)
->setCompany($estimate->company_id)
->setCustomer($estimate->customer_id)
@@ -262,7 +261,7 @@ class Estimate extends Model implements HasMedia
{
$data = $request->getEstimatePayload();
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($this)
->setCompany($this->company_id)
->setCustomer($request->customer_id)
@@ -424,11 +423,14 @@ class Estimate extends Model implements HasMedia
'taxes' => $taxes,
]);
$template = PdfTemplateUtils::findFormattedTemplate('estimate', $estimateTemplate, '');
$templatePath = $template['custom'] ? sprintf('pdf_templates::estimate.%s', $estimateTemplate) : sprintf('app.pdf.estimate.%s', $estimateTemplate);
if (request()->has('preview')) {
return view('app.pdf.estimate.'.$estimateTemplate);
return view($templatePath);
}
return PDF::loadView('app.pdf.estimate.'.$estimateTemplate);
return PDF::loadView($templatePath);
}
public function getCompanyAddress()
@@ -499,27 +501,13 @@ class Estimate extends Model implements HasMedia
];
}
public static function estimateTemplates()
{
$templates = Storage::disk('views')->files('/app/pdf/estimate');
$estimateTemplates = [];
foreach ($templates as $key => $template) {
$templateName = Str::before(basename($template), '.blade.php');
$estimateTemplates[$key]['name'] = $templateName;
$estimateTemplates[$key]['path'] = Vite::asset('resources/static/img/PDF/'.$templateName.'.png');
}
return $estimateTemplates;
}
public function getInvoiceTemplateName()
{
$templateName = Str::replace('estimate', 'invoice', $this->template_name);
$name = [];
foreach (Invoice::invoiceTemplates() as $template) {
foreach (PdfTemplateUtils::getFormattedTemplates('invoice') as $template) {
$name[] = $template['name'];
}

View File

@@ -5,6 +5,7 @@ namespace App\Models;
use App;
use App\Mail\SendInvoiceMail;
use App\Services\SerialNumberFormatter;
use App\Space\PdfTemplateUtils;
use App\Traits\GeneratesPdfTrait;
use App\Traits\HasCustomFieldsTrait;
use Barryvdh\DomPDF\Facade\Pdf as PDF;
@@ -14,9 +15,6 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Vite;
use Illuminate\Support\Str;
use Nwidart\Modules\Facades\Module;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
@@ -195,6 +193,12 @@ class Invoice extends Model implements HasMedia
public function getFormattedInvoiceDateAttribute($value)
{
$dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id);
$timeFormat = CompanySetting::getSetting('carbon_time_format', $this->company_id);
$invoiceTimeEnabled = CompanySetting::getSetting('invoice_use_time', $this->company_id);
if ($invoiceTimeEnabled === 'YES') {
$dateFormat .= ' '.$timeFormat;
}
return Carbon::parse($this->invoice_date)->translatedFormat($dateFormat);
}
@@ -248,53 +252,34 @@ class Invoice extends Model implements HasMedia
public function scopeApplyFilters($query, array $filters)
{
$filters = collect($filters);
$filters = collect($filters)->filter()->all();
if ($filters->get('search')) {
$query->whereSearch($filters->get('search'));
}
if ($filters->get('status')) {
if (
$filters->get('status') == self::STATUS_UNPAID ||
$filters->get('status') == self::STATUS_PARTIALLY_PAID ||
$filters->get('status') == self::STATUS_PAID
) {
$query->wherePaidStatus($filters->get('status'));
} elseif ($filters->get('status') == 'DUE') {
$query->whereDueStatus($filters->get('status'));
} else {
$query->whereStatus($filters->get('status'));
}
}
if ($filters->get('paid_status')) {
$query->wherePaidStatus($filters->get('status'));
}
if ($filters->get('invoice_id')) {
$query->whereInvoice($filters->get('invoice_id'));
}
if ($filters->get('invoice_number')) {
$query->whereInvoiceNumber($filters->get('invoice_number'));
}
if ($filters->get('from_date') && $filters->get('to_date')) {
$start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date'));
$end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date'));
return $query->when($filters['search'] ?? null, function ($query, $search) {
$query->whereSearch($search);
})->when($filters['status'] ?? null, function ($query, $status) {
match ($status) {
self::STATUS_UNPAID, self::STATUS_PARTIALLY_PAID, self::STATUS_PAID => $query->wherePaidStatus($status),
'DUE' => $query->whereDueStatus($status),
default => $query->whereStatus($status),
};
})->when($filters['paid_status'] ?? null, function ($query, $paidStatus) {
$query->wherePaidStatus($paidStatus);
})->when($filters['invoice_id'] ?? null, function ($query, $invoiceId) {
$query->whereInvoice($invoiceId);
})->when($filters['invoice_number'] ?? null, function ($query, $invoiceNumber) {
$query->whereInvoiceNumber($invoiceNumber);
})->when(($filters['from_date'] ?? null) && ($filters['to_date'] ?? null), function ($query) use ($filters) {
$start = Carbon::parse($filters['from_date']);
$end = Carbon::parse($filters['to_date']);
$query->invoicesBetween($start, $end);
}
if ($filters->get('customer_id')) {
$query->whereCustomer($filters->get('customer_id'));
}
if ($filters->get('orderByField') || $filters->get('orderBy')) {
$field = $filters->get('orderByField') ? $filters->get('orderByField') : 'sequence_number';
$orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'desc';
$query->whereOrder($field, $orderBy);
}
})->when($filters['customer_id'] ?? null, function ($query, $customerId) {
$query->where('customer_id', $customerId);
})->when($filters['orderByField'] ?? null, function ($query, $orderByField) use ($filters) {
$orderBy = $filters['orderBy'] ?? 'desc';
$query->orderBy($orderByField, $orderBy);
}, function ($query) {
$query->orderBy('sequence_number', 'desc');
});
}
public function scopeWhereInvoice($query, $invoice_id)
@@ -336,7 +321,7 @@ class Invoice extends Model implements HasMedia
$invoice = Invoice::create($data);
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($invoice)
->setCompany($invoice->company_id)
->setCustomer($invoice->customer_id)
@@ -377,7 +362,7 @@ class Invoice extends Model implements HasMedia
public function updateInvoice($request)
{
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($this)
->setCompany($this->company_id)
->setCustomer($request->customer_id)
@@ -393,7 +378,7 @@ class Invoice extends Model implements HasMedia
return 'customer_cannot_be_changed_after_payment_is_added';
}
if ($request->total < $total_paid_amount) {
if ($request->total >= 0 && $request->total < $total_paid_amount) {
return 'total_invoice_amount_must_be_more_than_paid_amount';
}
@@ -595,11 +580,14 @@ class Invoice extends Model implements HasMedia
'taxes' => $taxes,
]);
$template = PdfTemplateUtils::findFormattedTemplate('invoice', $invoiceTemplate, '');
$templatePath = $template['custom'] ? sprintf('pdf_templates::invoice.%s', $invoiceTemplate) : sprintf('app.pdf.invoice.%s', $invoiceTemplate);
if (request()->has('preview')) {
return view('app.pdf.invoice.'.$invoiceTemplate);
return view($templatePath);
}
return PDF::loadView('app.pdf.invoice.'.$invoiceTemplate);
return PDF::loadView($templatePath);
}
public function getEmailAttachmentSetting()
@@ -670,20 +658,6 @@ class Invoice extends Model implements HasMedia
];
}
public static function invoiceTemplates()
{
$templates = Storage::disk('views')->files('/app/pdf/invoice');
$invoiceTemplates = [];
foreach ($templates as $key => $template) {
$templateName = Str::before(basename($template), '.blade.php');
$invoiceTemplates[$key]['name'] = $templateName;
$invoiceTemplates[$key]['path'] = Vite::asset('resources/static/img/PDF/'.$templateName.'.png');
}
return $invoiceTemplates;
}
public function addInvoicePayment($amount)
{
$this->due_amount += $amount;

View File

@@ -163,7 +163,7 @@ class Payment extends Model implements HasMedia
$payment = Payment::create($data);
$payment->unique_hash = Hashids::connection(Payment::class)->encode($payment->id);
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($payment)
->setCompany($payment->company_id)
->setCustomer($payment->customer_id)
@@ -215,7 +215,7 @@ class Payment extends Model implements HasMedia
$invoice->subtractInvoicePayment($request->amount);
}
$serial = (new SerialNumberFormatter())
$serial = (new SerialNumberFormatter)
->setModel($this)
->setCompany($this->company_id)
->setCustomer($request->customer_id)
@@ -452,8 +452,8 @@ class Payment extends Model implements HasMedia
{
$invoice = Invoice::find($transaction->invoice_id);
$serial = (new SerialNumberFormatter())
->setModel(new Payment())
$serial = (new SerialNumberFormatter)
->setModel(new Payment)
->setCompany($invoice->company_id)
->setCustomer($invoice->customer_id)
->setNextNumbers();

View File

@@ -307,9 +307,9 @@ class RecurringInvoice extends Model
public function createInvoice()
{
//get invoice_number
$serial = (new SerialNumberFormatter())
->setModel(new Invoice())
// get invoice_number
$serial = (new SerialNumberFormatter)
->setModel(new Invoice)
->setCompany($this->company_id)
->setCustomer($this->customer_id)
->setNextNumbers();
@@ -375,7 +375,7 @@ class RecurringInvoice extends Model
$invoice->addCustomFields($customField);
}
//send automatically
// send automatically
if ($this->send_automatically == true) {
$data = [
'body' => CompanySetting::getSetting('invoice_mail_body', $this->company_id),

View File

@@ -22,7 +22,7 @@ class Setting extends Model
return;
}
$set = new Setting();
$set = new Setting;
$set->option = $key;
$set->value = $setting;
$set->save();

View File

@@ -65,10 +65,10 @@ class Transaction extends Model
public function isExpired()
{
$linkexpiryDays = CompanySetting::getSetting('link_expiry_days', $this->company_id);
$linkExpiryDays = (int) CompanySetting::getSetting('link_expiry_days', $this->company_id);
$checkExpiryLinks = CompanySetting::getSetting('automatically_expire_public_links', $this->company_id);
$expiryDate = $this->updated_at->addDays($linkexpiryDays);
$expiryDate = $this->updated_at->addDays($linkExpiryDays);
if ($checkExpiryLinks == 'YES' && $this->status == self::SUCCESS && Carbon::now()->format('Y-m-d') > $expiryDate->format('Y-m-d')) {
return true;

View File

@@ -40,7 +40,7 @@ class CustomerMailResetPasswordNotification extends ResetPassword
{
$link = url("/{$notifiable->company->slug}/customer/reset/password/".$this->token);
return (new MailMessage())
return (new MailMessage)
->subject('Reset Password Notification')
->line('Hello! You are receiving this email because we received a password reset request for your account.')
->action('Reset Password', $link)

View File

@@ -40,7 +40,7 @@ class MailResetPasswordNotification extends ResetPassword
{
$link = url('/reset-password/'.$this->token);
return (new MailMessage())
return (new MailMessage)
->subject('Reset Password Notification')
->line('Hello! You are receiving this email because we received a password reset request for your account.')
->action('Reset Password', $link)

View File

@@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
use Silber\Bouncer\Database\Models as BouncerModels;
use Silber\Bouncer\Database\Role;
use View;
class AppServiceProvider extends ServiceProvider
{
@@ -58,8 +59,16 @@ class AppServiceProvider extends ServiceProvider
Gate::policy(Role::class, RolePolicy::class);
View::addNamespace('pdf_templates', storage_path('app/templates/pdf'));
$this->bootAuth();
$this->bootBroadcast();
// In demo mode, prevent all outgoing emails and notifications
if (config('app.env') === 'demo') {
\Illuminate\Support\Facades\Mail::fake();
\Illuminate\Support\Facades\Notification::fake();
}
}
/**
@@ -72,14 +81,14 @@ class AppServiceProvider extends ServiceProvider
public function addMenus()
{
//main menu
// main menu
\Menu::make('main_menu', function ($menu) {
foreach (config('invoiceshelf.main_menu') as $data) {
$this->generateMenu($menu, $data);
}
});
//setting menu
// setting menu
\Menu::make('setting_menu', function ($menu) {
foreach (config('invoiceshelf.setting_menu') as $data) {
$this->generateMenu($menu, $data);

View File

@@ -2,6 +2,7 @@
namespace App\Rules\Backup;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
class BackupDisk implements ValidationRule
@@ -18,8 +19,6 @@ class BackupDisk implements ValidationRule
/**
* Run the validation rule.
*
* @param \Closure $fail
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -36,7 +36,7 @@ class Module
{
static::$scripts[$name] = $path;
return new static();
return new static;
}
/**
@@ -50,7 +50,7 @@ class Module
{
static::$styles[$name] = $path;
return new static();
return new static;
}
/**

View File

@@ -153,7 +153,7 @@ class ModuleInstaller
File::makeDirectory($temp_extract_dir);
}
// Unzip the file
$zip = new ZipArchive();
$zip = new ZipArchive;
if ($zip->open($zip_file_path)) {
$zip->extractTo($temp_extract_dir);

View File

@@ -0,0 +1,140 @@
<?php
namespace App\Space;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class PdfTemplateUtils
{
/**
* Find the formatted template
*
* @param string $imageFormat
* @return array|null
*/
public static function findFormattedTemplate($templateType, $templateName, $imageFormat = 'base64')
{
foreach (array_reverse(self::getFormattedTemplates($templateType, $imageFormat)) as $formattedTemplate) {
if ($formattedTemplate['name'] === $templateName) {
return $formattedTemplate;
}
}
return null;
}
/**
* Return the available formatted template paths
*
* @param string $imageFormat
* @return array|array[]
*/
public static function getFormattedTemplates($templateType, $imageFormat = 'base64')
{
$files_native = array_map(function ($file) {
return [
'path' => $file,
'custom' => false,
];
}, Storage::disk('views')->files(sprintf('/app/pdf/%s', $templateType)));
$files_custom = array_map(function ($file) {
return [
'path' => $file,
'custom' => true,
];
}, Storage::disk('pdf_templates')->files(sprintf('/%s', $templateType)));
$files = array_merge($files_native, $files_custom);
$files = array_filter($files, function ($file) {
return Str::endsWith($file['path'], '.blade.php');
});
return array_map(function ($file) use ($templateType, $imageFormat) {
$templateName = Str::before(basename($file['path']), '.blade.php');
if ($file['custom']) {
$imagePath = self::getCustomTemplateFilePath($templateType, sprintf('%s.png', $templateName));
$isCustomTemplate = true;
} else {
$imagePath = resource_path('static/img/PDF/'.$templateName.'.png');
$isCustomTemplate = false;
}
if (empty($imageFormat)) {
$imageValue = '';
} elseif ($imageFormat == 'path') {
$imageValue = $imagePath;
} else {
$imageValue = File::exists($imagePath) ? ImageUtils::toBase64Src($imagePath) : '';
}
return [
'name' => $templateName,
'path' => $imageValue,
'custom' => $isCustomTemplate,
];
}, $files);
}
/**
* Returns custom template path
*
* @param string $fileName
*/
public static function getCustomTemplateFilePath($templateType, $fileName = ''): string
{
$path = ! empty($fileName) ? sprintf('/%s/%s', $templateType, $fileName) : sprintf('/%s/', $templateType);
return Storage::disk('pdf_templates')->path($path);
}
/**
* Check if custom template exists.
*
* @param $templateName
* @return string
*/
public static function customTemplateFileExists($templateType, $fileName)
{
return Storage::disk('pdf_templates')->exists(sprintf('/%s/%s', $templateType, $fileName));
}
/**
* Save template markup file
*
* @return bool|string
*/
public static function toCustomTemplateMarkupFile($contents, $templateType, $templateName)
{
return self::toCustomTemplateFile($contents, $templateType, $templateName.'.blade.php');
}
/**
* Save template image file
*
*
* @return bool|string
*/
public static function toCustomTemplateImageFile($contents, $templateType, $templateName, $imageType = 'png')
{
return self::toCustomTemplateFile($contents, $templateType, $templateName.'.'.$imageType);
}
/**
* Save file contents into a template file of specific template type.
*
*
* @return bool|string
*/
public static function toCustomTemplateFile($contents, $templateType, $fileName)
{
return Storage::disk('pdf_templates')->put(
sprintf('/%s/%s', $templateType, $fileName),
$contents
);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Space;
use Carbon\Carbon;
class TimeFormatter
{
protected static $formats = [
[
'carbon_format' => 'H:i',
'moment_format' => 'HH:mm',
],
[
'carbon_format' => 'g:i a',
'moment_format' => 'h:mm a',
],
];
public static function get_list()
{
$new = [];
foreach (static::$formats as $format) {
$new[] = [
'display_time' => Carbon::now()->format($format['carbon_format']),
'carbon_format_value' => $format['carbon_format'],
'moment_format_value' => $format['moment_format'],
];
}
return $new;
}
}

View File

@@ -93,7 +93,7 @@ class Updater
File::makeDirectory($temp_extract_dir);
}
// Unzip the file
$zip = new ZipArchive();
$zip = new ZipArchive;
if ($zip->open($zip_file_path)) {
$zip->extractTo($temp_extract_dir);

View File

@@ -111,9 +111,9 @@ trait GeneratesPdfTrait
public function getFieldsArray()
{
$customer = $this->customer;
$shippingAddress = $customer->shippingAddress ?? new Address();
$billingAddress = $customer->billingAddress ?? new Address();
$companyAddress = $this->company->address ?? new Address();
$shippingAddress = $customer->shippingAddress ?? new Address;
$billingAddress = $customer->billingAddress ?? new Address;
$companyAddress = $this->company->address ?? new Address;
$fields = [
'{SHIPPING_ADDRESS_NAME}' => $shippingAddress->name,
@@ -140,11 +140,14 @@ trait GeneratesPdfTrait
'{COMPANY_ADDRESS_STREET_2}' => $companyAddress->address_street_2,
'{COMPANY_PHONE}' => $companyAddress->phone,
'{COMPANY_ZIP_CODE}' => $companyAddress->zip,
'{COMPANY_VAT}' => $this->company->vat_id,
'{COMPANY_TAX}' => $this->company->tax_id,
'{CONTACT_DISPLAY_NAME}' => $customer->name,
'{PRIMARY_CONTACT_NAME}' => $customer->contact_name,
'{CONTACT_EMAIL}' => $customer->email,
'{CONTACT_PHONE}' => $customer->phone,
'{CONTACT_WEBSITE}' => $customer->website,
'{CONTACT_TAX_ID}' => __('pdf_tax_id').': '.$customer->tax_id,
];
$customFields = $this->fields;

View File

@@ -67,6 +67,7 @@ return Application::configure(basePath: dirname(__DIR__))
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//

View File

@@ -9,25 +9,25 @@
"type": "project",
"require": {
"php": "^8.2",
"aws/aws-sdk-php": "^3.297",
"barryvdh/laravel-dompdf": "^2.1",
"doctrine/dbal": "^4.0",
"dragonmantank/cron-expression": "^3.3",
"guzzlehttp/guzzle": "^7.2",
"aws/aws-sdk-php": "^3.336",
"barryvdh/laravel-dompdf": "^v3.0",
"doctrine/dbal": "^4.2",
"dragonmantank/cron-expression": "^v3.4",
"guzzlehttp/guzzle": "^7.9",
"invoiceshelf/modules": "^1.0.0",
"jasonmccreary/laravel-test-assertions": "^2.4",
"laravel/framework": "^11.3",
"jasonmccreary/laravel-test-assertions": "^v2.4",
"laravel/framework": "^11.31",
"laravel/helpers": "^1.7",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^2.9",
"laravel/ui": "^4.4",
"laravel/ui": "^4.6",
"lavary/laravel-menu": "^1.8",
"league/flysystem-aws-s3-v3": "^3.23",
"predis/predis": "^2.2",
"league/flysystem-aws-s3-v3": "^3.29",
"predis/predis": "^2.3",
"silber/bouncer": "v1.0.2",
"spatie/flysystem-dropbox": "^3.0",
"spatie/laravel-backup": "^8.6",
"spatie/laravel-medialibrary": "^11.3",
"spatie/laravel-backup": "^8.8",
"spatie/laravel-medialibrary": "^11.11",
"vinkla/hashids": "^12.0"
},
"require-dev": {
@@ -35,14 +35,14 @@
"laravel/pint": "^1.13",
"laravel/sail": "^1.26",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.0",
"phpunit/phpunit": "^10.5",
"spatie/laravel-ignition": "^2.4",
"barryvdh/laravel-ide-helper": "^3.0",
"beyondcode/laravel-dump-server": "^2.0",
"pestphp/pest": "^2.33",
"pestphp/pest-plugin-faker": "^2.0",
"pestphp/pest-plugin-laravel": "^2.2"
"nunomaduro/collision": "^8.1",
"phpunit/phpunit": "^11.0.1",
"spatie/laravel-ignition": "^2.9",
"barryvdh/laravel-ide-helper": "^3.5",
"beyondcode/laravel-dump-server": "^2.0.0",
"pestphp/pest": "^3.7",
"pestphp/pest-plugin-faker": "^3.0",
"pestphp/pest-plugin-laravel": "^3.0"
},
"autoload": {
"psr-4": {

3211
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -119,7 +119,7 @@ return [
* If pdflib present in web server and auto or selected explicitly above,
* a real license code must exist!
*/
//"DOMPDF_PDFLIB_LICENSE" => "your license key here",
// "DOMPDF_PDFLIB_LICENSE" => "your license key here",
/**
* html target media view which should be rendered into pdf.

View File

@@ -55,6 +55,11 @@ return [
'driver' => 'local',
'root' => resource_path('views'),
],
'pdf_templates' => [
'driver' => 'local',
'root' => storage_path('app/templates/pdf'),
],
],
];

View File

@@ -136,7 +136,7 @@ return [
'-m 6', // for the slowest compression method in order to get the best compression.
'-pass 10', // for maximizing the amount of analysis pass.
'-mt', // multithreading for some speed improvements.
'-q 90', //quality factor that brings the least noticeable changes.
'-q 90', // quality factor that brings the least noticeable changes.
],
Spatie\ImageOptimizer\Optimizers\Avifenc::class => [
'-a cq-level=23', // constant quality level, lower values mean better quality and greater file size (0-63).

View File

@@ -39,8 +39,8 @@ return [
'resources/sass/module' => 'Resources/sass/module.scss',
'resources/scripts/stores/sample-store' => 'Resources/scripts/stores/sample-store.js',
'resources/scripts/views/SamplePage' => 'Resources/scripts/views/SamplePage.vue',
'lang/en' => 'Lang/en.json',
'lang/locales' => 'Lang/locales.js',
'resources/locales/en' => 'Resources/locales/en.json',
'resources/locales/locales' => 'Resources/locales/locales.js',
'package' => 'package.json',
'postcss.config' => 'postcss.config.js',
'tailwind.config' => 'tailwind.config.js',
@@ -63,8 +63,8 @@ return [
'MODULE_NAMESPACE',
'PROVIDER_NAMESPACE',
],
'assets/scripts/module' => ['LOWER_NAME'],
'assets/scripts/stores/sample-store' => ['LOWER_NAME'],
'resources/scripts/module' => ['LOWER_NAME'],
'resources/scripts/stores/sample-store' => ['LOWER_NAME'],
'vite.config' => ['LOWER_NAME'],
],
'gitkeep' => true,

View File

@@ -68,8 +68,8 @@ class EstimateFactory extends Factory
*/
public function definition(): array
{
$sequenceNumber = (new SerialNumberFormatter())
->setModel(new Estimate())
$sequenceNumber = (new SerialNumberFormatter)
->setModel(new Estimate)
->setCompany(User::find(1)->companies()->first()->id)
->setNextNumbers();

View File

@@ -78,8 +78,8 @@ class InvoiceFactory extends Factory
*/
public function definition(): array
{
$sequenceNumber = (new SerialNumberFormatter())
->setModel(new Invoice())
$sequenceNumber = (new SerialNumberFormatter)
->setModel(new Invoice)
->setCompany(User::find(1)->companies()->first()->id)
->setNextNumbers();

View File

@@ -24,8 +24,8 @@ class PaymentFactory extends Factory
*/
public function definition(): array
{
$sequenceNumber = (new SerialNumberFormatter())
->setModel(new Payment())
$sequenceNumber = (new SerialNumberFormatter)
->setModel(new Payment)
->setCompany(User::find(1)->companies()->first()->id)
->setNextNumbers();

View File

@@ -24,7 +24,5 @@ class AddUserIdToExpensesTable extends Migration
*
* @return void
*/
public function down()
{
}
public function down() {}
}

View File

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class() extends Migration
return new class extends Migration
{
/**
* Run the migrations.

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('invoices', function (Blueprint $table) {
$table->datetime('invoice_date')->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('invoices', function (Blueprint $table) {
$table->date('invoice_date')->change();
});
}
};

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('customers', function (Blueprint $table) {
$table->string('tax_id')->nullable()->after('github_id');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('customers', function (Blueprint $table) {
$table->dropColumn('tax_id');
});
}
};

View File

@@ -0,0 +1,65 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('invoices', function (Blueprint $table) {
$table->bigInteger('discount_val')->nullable()->change();
$table->bigInteger('sub_total')->change();
$table->bigInteger('total')->change();
$table->bigInteger('tax')->change();
$table->bigInteger('due_amount')->change();
$table->bigInteger('base_discount_val')->nullable()->change();
$table->bigInteger('base_sub_total')->nullable()->change();
$table->bigInteger('base_total')->nullable()->change();
$table->bigInteger('base_tax')->nullable()->change();
$table->bigInteger('base_due_amount')->nullable()->change();
});
Schema::table('invoice_items', function (Blueprint $table) {
$table->bigInteger('discount_val')->change();
$table->bigInteger('tax')->change();
$table->bigInteger('total')->change();
$table->bigInteger('base_discount_val')->nullable()->change();
$table->bigInteger('base_tax')->nullable()->change();
$table->bigInteger('base_total')->nullable()->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('invoices', function (Blueprint $table) {
$table->unsignedBigInteger('discount_val')->nullable()->change();
$table->unsignedBigInteger('sub_total')->change();
$table->unsignedBigInteger('total')->change();
$table->unsignedBigInteger('due_amount')->change();
$table->unsignedBigInteger('base_discount_val')->nullable()->change();
$table->unsignedBigInteger('base_sub_total')->nullable()->change();
$table->unsignedBigInteger('base_total')->nullable()->change();
$table->unsignedBigInteger('base_tax')->nullable()->change();
$table->unsignedBigInteger('base_due_amount')->nullable()->change();
});
Schema::table('invoice_items', function (Blueprint $table) {
$table->unsignedBigInteger('discount_val')->change();
$table->unsignedBigInteger('tax')->change();
$table->unsignedBigInteger('total')->change();
$table->unsignedBigInteger('base_discount_val')->nullable()->change();
$table->unsignedBigInteger('base_tax')->nullable()->change();
$table->unsignedBigInteger('base_total')->nullable()->change();
});
}
};

View File

@@ -487,8 +487,8 @@ class CurrenciesTableSeeder extends Seeder
[
'name' => 'Tunisian Dinar',
'code' => 'TND',
'symbol' => '‎د.ت',
'precision' => '2',
'symbol' => 'DT',
'precision' => '3',
'thousand_separator' => ',',
'decimal_separator' => '.',
],

View File

@@ -2,11 +2,15 @@
namespace Database\Seeders;
use App\Models\Address;
use App\Models\Company;
use App\Models\CompanySetting;
use App\Models\Customer;
use App\Models\Setting;
use App\Models\User;
use App\Space\InstallUtils;
use Illuminate\Database\Seeder;
use Silber\Bouncer\BouncerFacade;
use Vinkla\Hashids\Facades\Hashids;
class DemoSeeder extends Seeder
{
@@ -15,14 +19,60 @@ class DemoSeeder extends Seeder
*/
public function run(): void
{
$user = User::whereIs('super admin')->first();
// Create demo user
$user = User::factory()->create([
'email' => 'demo@invoiceshelf.com',
'name' => 'Demo User',
'role' => 'super admin',
'password' => 'demo',
]);
$user->setSettings(['language' => 'en']);
// Create demo company
$company = Company::factory()->create([
'name' => 'Demo Company',
'owner_id' => $user->id,
'slug' => 'demo-company',
]);
Address::create(['company_id' => $user->companies()->first()->id, 'country_id' => 1]);
$company->unique_hash = Hashids::connection(Company::class)->encode($company->id);
$company->save();
$company->setupDefaultData();
$user->companies()->attach($company->id);
BouncerFacade::scope()->to($company->id);
$user->assign('super admin');
// Set default user settings
$user->setSettings([
'language' => 'en',
'timezone' => 'UTC',
'date_format' => 'DD-MM-YYYY',
'currency_id' => 1, // USD
]);
// Set company settings
CompanySetting::setSettings([
'currency' => 1,
'date_format' => 'DD-MM-YYYY',
'language' => 'en',
'timezone' => 'UTC',
'fiscal_year' => 'calendar_year',
'tax_per_item' => false,
'discount_per_item' => false,
'invoice_prefix' => 'INV-',
'estimate_prefix' => 'EST-',
'payment_prefix' => 'PAY-',
], $company->id);
// Create demo customers
Customer::factory()->count(5)->create([
'company_id' => $company->id,
]);
// Mark profile setup as complete
Setting::setSetting('profile_complete', 'COMPLETED');
// Create installation marker
InstallUtils::createDbMarker();
}
}

View File

@@ -4,7 +4,7 @@
"customers": "العملاء",
"items": "بضائع/خدمات",
"invoices": "الفواتير",
"recurring-invoices": "Recurring Invoices",
"recurring-invoices": "الفواتير المتكررة",
"expenses": "النفقات",
"estimates": "التقديرات",
"payments": "الدفوعات",
@@ -12,7 +12,7 @@
"settings": "الإعدادات",
"logout": "تسجيل الخروج",
"users": "المستخدمون",
"modules": "Modules"
"modules": "الوَحَدات"
},
"general": {
"add_company": "أضف شركة",
@@ -29,9 +29,9 @@
"to_date": "إلى تاريخ",
"from": "من",
"to": "إلى",
"ok": "Ok",
"yes": "Yes",
"no": "No",
"ok": "تم",
"yes": "نعم",
"no": "لا",
"sort_by": "ترتيب حسب",
"ascending": "تصاعدي",
"descending": "تنازلي",
@@ -96,27 +96,27 @@
"copied_url_clipboard": "Copied url to clipboard!",
"docs": "Docs",
"do_you_wish_to_continue": "Do you wish to continue?",
"note": "Note",
"pay_invoice": "Pay Invoice",
"login_successfully": "Logged in successfully!",
"logged_out_successfully": "Logged out successfully",
"note": "ملاحظة",
"pay_invoice": "دفع الفاتورة",
"login_successfully": "تم تسجيل الدخول بنجاح!",
"logged_out_successfully": "تم تسجيل الخروج بنجاح",
"mark_as_default": "Mark as default",
"no_data_found": "No data found",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"to": "إلى",
"of": "من",
"results": "النتائج"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "اسحب ملف هنا أو",
"browse": "تصفح",
"to_choose": "لاختيار ملف"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"the_list_is_empty": "القائمة فارغة",
"no_results_found": "No results found"
},
"copy_to_clipboard": "Copy to Clipboard"
@@ -172,16 +172,16 @@
"company_switcher": {
"label": "SWITCH COMPANY",
"no_results_found": "No Results Found",
"add_new_company": "Add new company",
"new_company": "New company",
"add_new_company": "أضف شركة جديدة",
"new_company": "شركة جديدة",
"created_message": "Company created successfully"
},
"dateRange": {
"today": "Today",
"this_week": "This Week",
"this_month": "This Month",
"today": "اليوم",
"this_week": "هذا الأسبوع",
"this_month": "هذا الشهر",
"this_quarter": "This Quarter",
"this_year": "This Year",
"this_year": "هذا العام",
"previous_week": "Previous Week",
"previous_month": "Previous Month",
"previous_quarter": "Previous Quarter",
@@ -191,6 +191,7 @@
"customers": {
"title": "العملاء",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "إضافة عميل",
"contacts_list": "قائمة العملاء",
"name": "الاسم",
@@ -323,9 +324,9 @@
"record_payment": "تسجيل مدفوات",
"add_estimate": "إضافة تقدير",
"save_estimate": "حفظ التقدير",
"cloned_successfully": "تم استنساخ العرض بنجاح",
"clone_estimate": "استنساخ العرض",
"confirm_clone": "سيتم استنساخ هذا العرض إلى عرض جديد",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "هل تريد تحويل هذا التقدير إلى فاتورة؟",
"conversion_message": "تم إنشاء الفاتورة بنجاح",
"confirm_send_estimate": "سيتم إرسال هذا التقدير بالبريد الإلكتروني إلى العميل",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "العملة الرئيسية",
"timezone": "المنطقة الزمنية",
"date_format": "صيغة التاريخ",
"time_format": "Time Format",
"currencies": {
"title": "العملات",
"currency": "العملة | العملات",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "المنطة الزمنية",
"fiscal_year": "السنة المالية",
"date_format": "صيغة التاريخ",
"time_format": "Time Fromat",
"discount_setting": "إعدادات الخصم",
"discount_per_item": "خصم على الصنف ",
"discount_setting_description": "قم بتمكين هذا إذا كنت تريد إضافة خصم إلى عناصر الفاتورة الفردية. بشكل افتراضي ، يتم إضافة الخصم مباشرة إلى الفاتورة.",
@@ -1245,6 +1249,7 @@
"select_language": "اختر اللغة",
"select_time_zone": "اختر المنطة الزمنية",
"select_date_format": "اختر صيغة التاريخ",
"select_time_format": "Select Time Format",
"select_financial_year": "اختر السنة المالية",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "المنطة الزمنية",
"fiscal_year": "السنة المالية",
"date_format": "صيغة التاريخ",
"time_format": "Time Format",
"from_address": "من العنوان",
"username": "اسم المستخدم",
"next": "التالي",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Customers",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Add Customer",
"contacts_list": "Customer List",
"name": "Name",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -101,25 +101,25 @@
"login_successfully": "Přihlášení proběhlo úspěšně!",
"logged_out_successfully": "Odhlášení proběhlo úspěšně",
"mark_as_default": "Označit jako výchozí",
"no_data_found": "No data found",
"no_data_found": "Data nenalezena",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Předchozí",
"next": "Další",
"showing": "Zobrazeno",
"to": "",
"of": "z",
"results": "výsledků"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Sem přetáhněte soubor nebo",
"browse": "procházet",
"to_choose": "pro výběr souboru"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "Seznam je prázdný",
"no_results_found": "Nebyly nalezeny žádné výsledky"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Kopírovat do schránky"
},
"dashboard": {
"select_year": "Vybrat rok",
@@ -190,7 +190,8 @@
},
"customers": {
"title": "Zákazníci",
"prefix": "Prefix",
"prefix": "Předpona",
"tax_id": "DIČ",
"add_customer": "Přidat zákazníka",
"contacts_list": "Seznam zákazníků",
"name": "Jméno",
@@ -200,7 +201,7 @@
"primary_contact_name": "Jméno primárního kontaktu",
"contact_name": "Jméno kontaktu",
"amount_due": "Částka k zaplacení",
"email": "Email",
"email": "E-mail",
"address": "Adresa",
"phone": "Telefon",
"website": "Webová stránka",
@@ -323,9 +324,9 @@
"record_payment": "Zaznamenat platbu",
"add_estimate": "Přidat nabídku",
"save_estimate": "Uložit nabídku",
"cloned_successfully": "Devis úspěšně zkopírován",
"clone_estimate": "Klonovat devis",
"confirm_clone": "Tento devis bude zkopírován do nového devisu",
"cloned_successfully": "Odhad úspěšně naklonován",
"clone_estimate": "Klonovat odhad",
"confirm_clone": "Tento odhad bude klonován do nového odhadu",
"confirm_conversion": "Tento odhad bude použit k vytvoření nové faktury.",
"conversion_message": "Faktura byla úspěšně vytvořena",
"confirm_send_estimate": "Tento odhad bude zaslán e-mailem zákazníkovi",
@@ -564,24 +565,24 @@
"type_item_description": "Zadejte popis položky (volitelné)"
},
"frequency": {
"title": "Četnost",
"title": "Frekvence (pomocí formátu cron)",
"select_frequency": "Vybrat četnost",
"minute": "Minuta",
"hour": "Hodina",
"day_month": "Den v měsíci",
"month": "Měsíc",
"day_week": "Den v týdnu",
"every_minute": "Every Minute",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
"every_minute": "Každou minutu",
"every_30_minute": "Každých 30 minut",
"every_hour": "Každou hodinu",
"every_2_hour": "Každé 2 hodiny",
"every_day_at_midnight": "Každý den o půlnoci",
"every_week": "Každý týden",
"every_15_days_at_midnight": "Každých 15 dní o půlnoci",
"on_the_first_day_of_every_month_at_midnight": "První den každého měsíce ve 00:00",
"every_6_month": "Každých 6 měsíců",
"every_year_on_the_first_day_of_january_at_midnight": "Každý rok první den v lednu v 00:00",
"custom": "Vlastní"
},
"confirm_delete": "Nebudete moci obnovit tuto fakturu | Nebudete moci obnovit tyto faktury",
"created_message": "Opakující se faktura byla úspěšně vytvořena",
@@ -592,9 +593,9 @@
"something_went_wrong": "něco se nezdařilo",
"invalid_due_amount_message": "Celková částka opakované faktury nemůže být nižší než celková částka zaplacená za tuto opakující se fakturu. Pro pokračování aktualizujte fakturu nebo odstraňte související platby.",
"limit": {
"none": "None",
"date": "Date",
"count": "Count"
"none": "Žádné",
"date": "Datum",
"count": "Počet"
}
},
"payments": {
@@ -634,7 +635,7 @@
"updated_message": "Platba úspěšně upravena",
"deleted_message": "Platba úspěšně odstraněna | Platby úspěšně odstraněny",
"invalid_amount_message": "Částka platby je neplatná",
"amount_due": "Due Amount"
"amount_due": "Částka k úhradě"
},
"expenses": {
"title": "Výdaje",
@@ -722,7 +723,7 @@
"module_updated": "Modul byl úspěšně aktualizován!",
"title": "Moduly",
"module": "Modul | Moduly",
"api_token": "API token",
"api_token": "API Token",
"invalid_api_token": "Neplatný API token.",
"other_modules": "Další moduly",
"view_all": "Zobrazit vše",
@@ -740,7 +741,7 @@
"no_modules_installed": "Nejsou nainstalovány žádné moduly!",
"disable_warning": "Všechna nastavení pro tuto konkrétní položku budou vrácena zpět.",
"what_you_get": "Co získáte",
"sign_up_and_get_token": "Sign up & Get Token"
"sign_up_and_get_token": "Zaregistrujte se a získejte Token"
},
"users": {
"title": "Uživatelé",
@@ -794,8 +795,8 @@
"from_date": "Od data",
"report_type": "Typ hlášení",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Podle zákazníka",
"by_item": "Podle položky"
}
},
"taxes": {
@@ -863,6 +864,7 @@
"primary_currency": "Primární měna",
"timezone": "Časová zóna",
"date_format": "Formát data",
"time_format": "Time Format",
"currencies": {
"title": "Měny",
"currency": "Měna | Měny",
@@ -886,11 +888,11 @@
"port": "Port e-mailu",
"driver": "Ovladač e-mailů",
"secret": "Tajný klíč",
"mailgun_secret": "Mailgun Secret",
"mailgun_secret": "Mailgun tajný klíč (secret)",
"mailgun_domain": "Doména",
"mailgun_endpoint": "Mailgun Endpoint",
"ses_secret": "SES Secret",
"ses_key": "SES Key",
"ses_secret": "SES tajný klíč (secret)",
"ses_key": "Klíč SES",
"password": "E-mailové heslo",
"username": "Uživatelské jméno pro e-mail",
"mail_config": "Konfigurace e-mailu",
@@ -907,8 +909,8 @@
"company_info": {
"company_info": "Údaje o společnosti",
"company_name": "Název společnosti",
"tax_id": "Tax Identification Number",
"vat_id": "VAT Identification Number",
"tax_id": "Daňové identifikační číslo",
"vat_id": "Daňové identifikační číslo",
"company_logo": "Logo společnosti",
"section_description": "Informace o vaší společnosti, která bude zobrazena na fakturách, odhadech a dalších dokladech vytvořených v InvoiceShelfu.",
"phone": "Telefon",
@@ -940,7 +942,7 @@
"placeholder": "Zástupný text",
"help_text": "Text nápovědy",
"default_value": "Výchozí hodnota",
"prefix": "Prefix",
"prefix": "Předpona",
"starting_number": "Počáteční číslo",
"model": "Model",
"help_text_description": "Zadejte nějaký text, který pomůže uživatelům pochopit účel tohoto vlastního pole.",
@@ -966,11 +968,11 @@
"model_in_use": "Nelze aktualizovat model pro pole, která jsou již používána.",
"type_in_use": "Nelze aktualizovat typ pro pole, která jsou již používána.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"estimate": "Estimate",
"expense": "Expense",
"payment": "Payment"
"customer": "Zákazník",
"invoice": "Faktura",
"estimate": "Odhad",
"expense": "Výdaj",
"payment": "Platba"
}
},
"customization": {
@@ -989,6 +991,7 @@
"delimiter_description": "Jeden znak pro určení hranice mezi 2 samostatnými komponentami. Ve výchozím nastavení je nastaveno na -",
"delimiter_param_label": "Hodnota oddělovače",
"date_format": "Formát data",
"time_format": "Time Format",
"date_format_description": "Pole pro formát místní data a času. Výchozí formát: 'Y' vykresluje aktuální rok.",
"date_format_param_label": "Formát",
"sequence": "Sekvence",
@@ -1094,9 +1097,9 @@
"already_in_use": "Poznámka je již používána",
"deleted_message": "Poznámka byla úspěšně smazána",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
"estimate": "Odhad",
"invoice": "Faktura",
"payment": "Platba"
}
}
},
@@ -1233,6 +1236,7 @@
"time_zone": "Časové pásmo",
"fiscal_year": "Fiskální rok",
"date_format": "Formát data",
"time_format": "Time Fromat",
"discount_setting": "Nastavení slev",
"discount_per_item": "Sleva za položku ",
"discount_setting_description": "Povolte tuto možnost, pokud chcete přidat slevu do jednotlivých položek faktury. Ve výchozím nastavení je sleva přidána přímo na fakturu.",
@@ -1245,6 +1249,7 @@
"select_language": "Vyberte jazyk",
"select_time_zone": "Vyberte časové pásmo",
"select_date_format": "Vyberte formát data",
"select_time_format": "Select Time Format",
"select_financial_year": "Vyberte fiskální rok",
"recurring_invoice_status": "Stav opakující se faktury",
"create_status": "Vytvořit stav",
@@ -1253,26 +1258,28 @@
"update_status": "Upravit stav",
"completed": "Dokončeno",
"company_currency_unchangeable": "Měnu společnosti nelze měnit",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"december_november": "December - November"
"january_december": "Leden - Prosinec",
"february_january": "Únor - Leden",
"march_february": "Březen - Únor",
"april_march": "Duben - Březen",
"may_april": "Květen - Duben",
"june_may": "Červen - Květen",
"july_june": "Červenec - Červen",
"august_july": "Srpen - Červenec",
"september_august": "Září - Srpen",
"october_september": "Říjen - Září",
"november_october": "Listopad - Říjen",
"december_november": "Prosinec - Listopad"
}
},
"update_app": {
"title": "Aktualizace aplikace",
"description": "Kliknutím na tlačítko níže můžete jednoduše aktualizovat InvoiceShelf",
"check_update": "Zkontrolovat aktualizace",
"insider_consent": "Opt-in for Insider releases. Recommended for testing purposes only.",
"insider_consent": "Přihlaste se k odběru novinek Insider. Doporučujeme pouze pro testovací účely.",
"avail_update": "K dispozici je nová aktualizace",
"next_version": "Další verze",
"requirements": "Požadavky",
@@ -1341,7 +1348,7 @@
"aws_bucket": "AWS Bucket",
"aws_root": "AWS Root",
"s3_endpoint": "S3 Endpoint",
"s3_key": "S3 Key",
"s3_key": "S3 klíč",
"s3_secret": "S3 Secret",
"s3_region": "S3 Region",
"s3_bucket": "S3 Bucket",
@@ -1421,14 +1428,15 @@
"time_zone": "Časové pásmo",
"fiscal_year": "Fiskální rok",
"date_format": "Formát data",
"time_format": "Time Format",
"from_address": "Z adresy",
"username": "Uživatelské jméno",
"next": "Další",
"continue": "Pokračovat",
"skip": "Přeskočit",
"install_language": {
"title": "Choose your language",
"description": "Select language wizard to install InvoiceShelf"
"title": "Vyberte svůj jazyk",
"description": "Vyberte jazyk průvodce pro instalaci InvoiceShelf"
},
"database": {
"database": "URL webu a databáze",
@@ -1441,7 +1449,7 @@
"username": "Uživatelské jméno k databázi",
"db_name": "Název databáze",
"db_path": "Cesta k databázi",
"overwrite": "Overwrite existing database and proceed",
"overwrite": "Přepsat existující databázi a pokračovat",
"desc": "Vytvořte databázi na svém serveru a nastavte přihlašovací údaje pomocí níže uvedeného formuláře."
},
"permissions": {
@@ -1459,11 +1467,11 @@
"failed": "Ověření domény se nezdařilo. Zadejte prosím platný název domény.",
"verify_and_continue": "Ověřit a pokračovat",
"notes": {
"notes": "Notes:",
"not_contain": "App domain should not contain",
"or": "or",
"in_front": "in front of the domain.",
"if_you": "If you're accessing the website on a different port, please mention the port. For example:"
"notes": "Poznámky:",
"not_contain": "Doména aplikace by neměla obsahovat",
"or": "nebo",
"in_front": "před doménou.",
"if_you": "Pokud přistupujete k webu na jiném portu, uveďte prosím i port. Například:"
}
},
"mail": {
@@ -1614,15 +1622,17 @@
"pdf_ship_to": "Příjemce",
"pdf_received_from": "Přijato od:",
"pdf_tax_label": "Daň",
"pdf_tax_id": "Tax-ID",
"pdf_tax_id": "DIČ",
"pdf_vat_id": "VAT-ID",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Díky",
"mail_view_estimate": "Zobrazit odhad",
"mail_viewed_estimate": ":name si prohlédl tento odhad.",
"mail_view_invoice": "Zobrazit fakturu",
"mail_viewed_invoice": ":name si prohlédl tuto fakturu.",
"mail_view_payment": "Zobrazit platbu",
"notification_view_estimate": "[Notifikace] Zobrazený odhad",
"notification_view_invoice": "[Notifikace] Zobrazená faktura",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Obdrželi jste novou fakturu od <b>{COMPANY_NAME}</b>.</br> Stáhněte si pomocí tlačítka níže:"
}

View File

@@ -101,25 +101,25 @@
"login_successfully": "Erfolgreich angemeldet!",
"logged_out_successfully": "Erfolgreich abgemeldet",
"mark_as_default": "Als Standard festlegen",
"no_data_found": "No data found",
"no_data_found": "Keine Daten gefunden",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Zurück",
"next": "Weiter",
"showing": "Zeigt an",
"to": "bis",
"of": "von",
"results": "Ergebnisse"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Ziehe eine Datei hierher oder",
"browse": "durchsuchen",
"to_choose": "um eine Datei auszuwählen"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "Die Liste ist leer",
"no_results_found": "Keine Ergebnisse gefunden"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "In die Zwischenablage kopieren"
},
"dashboard": {
"select_year": "Jahr wählen",
@@ -191,6 +191,7 @@
"customers": {
"title": "Kunden",
"prefix": "Präfix",
"tax_id": "USt-ID",
"add_customer": "Kunde hinzufügen",
"contacts_list": "Kunden-Liste",
"name": "Name",
@@ -323,9 +324,9 @@
"record_payment": "Zahlung erfassen",
"add_estimate": "Angebote hinzufügen",
"save_estimate": "Angebot speichern",
"cloned_successfully": "Angebot erfolgreich geklont",
"clone_estimate": "Angebot klonen",
"confirm_clone": "Dieses Angebot wird in ein neues Angebot kopiert",
"cloned_successfully": "Angebot erfolgreich kopiert",
"clone_estimate": "Angebot kopieren",
"confirm_clone": "Dieses Angebot wird als neues Angebot kopiert",
"confirm_conversion": "Dieses Angebot wird verwendet, um eine neue Rechnung zu erstellen.",
"conversion_message": "Rechnung erfolgreich erstellt",
"confirm_send_estimate": "Das Angebot wird per E-Mail an den Kunden gesendet",
@@ -564,24 +565,24 @@
"type_item_description": "Artikel-Beschreibung (optional)"
},
"frequency": {
"title": "Intervall",
"title": "Frequenz (mit cron-Format)",
"select_frequency": "Intervall auswählen",
"minute": "Minute",
"hour": "Stunde",
"day_month": "Tag des Monats",
"month": "Monat",
"day_week": "Tag der Woche",
"every_minute": "Every Minute",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
"every_minute": "Minütlich",
"every_30_minute": "Alle 30 Minuten",
"every_hour": "Stündlich",
"every_2_hour": "Alle 2 Stunden",
"every_day_at_midnight": "Jeden Tag um Mitternacht",
"every_week": "Wöchentlich",
"every_15_days_at_midnight": "Alle 15 Tage um Mitternacht",
"on_the_first_day_of_every_month_at_midnight": "Am ersten Tag jeden Monats um 00:00 Uhr",
"every_6_month": "Alle 6 Monate",
"every_year_on_the_first_day_of_january_at_midnight": "Jedes Jahr am ersten Tag des Januar um 00:00 Uhr",
"custom": "Benutzerdefiniert"
},
"confirm_delete": "Sie werden diese Rechnung nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Rechnungen wiederherzustellen",
"created_message": "Serienrechnung erfolgreich erstellt",
@@ -592,9 +593,9 @@
"something_went_wrong": "etwas ist schief gelaufen",
"invalid_due_amount_message": "Der Gesamtbetrag der Serienrechnung darf nicht kleiner als der bezahlte Gesamtbetrag für diese Serienrechnung sein. Bitte aktualisieren Sie die Rechnung oder löschen Sie die zugehörigen Zahlungen, um fortzufahren.",
"limit": {
"none": "None",
"date": "Date",
"count": "Count"
"none": "Keine",
"date": "Datum",
"count": "Anzahl"
}
},
"payments": {
@@ -634,7 +635,7 @@
"updated_message": "Zahlung erfolgreich aktualisiert",
"deleted_message": "Zahlung erfolgreich gelöscht | Zahlungen erfolgreich gelöscht",
"invalid_amount_message": "Zahlungsbetrag ist ungültig",
"amount_due": "Due Amount"
"amount_due": "Fälliger Betrag"
},
"expenses": {
"title": "Ausgaben",
@@ -740,7 +741,7 @@
"no_modules_installed": "Noch keine Module installiert!",
"disable_warning": "Alle Einstellungen für diesen speziellen Wert werden zurückgesetzt.",
"what_you_get": "Was Sie erhalten",
"sign_up_and_get_token": "Sign up & Get Token"
"sign_up_and_get_token": "Registrieren & Token erhalten"
},
"users": {
"title": "Benutzer",
@@ -794,8 +795,8 @@
"from_date": "Ab Datum",
"report_type": "Berichtstyp",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Vom Kunden",
"by_item": "Nach Artikel"
}
},
"taxes": {
@@ -863,6 +864,7 @@
"primary_currency": "Primäre Währung",
"timezone": "Zeitzone",
"date_format": "Datum-Format",
"time_format": "Time Format",
"currencies": {
"title": "Währungen",
"currency": "Währung | Währungen",
@@ -966,11 +968,11 @@
"model_in_use": "Das Modell kann für bereits verwendete Felder nicht aktualisiert werden.",
"type_in_use": "Der Typ von bereits verwendeten Feldern kann nicht aktualisiert werden.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"estimate": "Estimate",
"expense": "Expense",
"payment": "Payment"
"customer": "Kunde",
"invoice": "Rechnung",
"estimate": "Angebot",
"expense": "Ausgabe",
"payment": "Zahlung"
}
},
"customization": {
@@ -989,6 +991,7 @@
"delimiter_description": "Einzelnes Zeichen für die Verwendung zwischen zwei separaten Komponenten. Standardmäßig ist dies -",
"delimiter_param_label": "Trennzeichen",
"date_format": "Datumsformat",
"time_format": "Time Format",
"date_format_description": "Ein lokales Datums- und Zeitfeld, das einen Format-Parameter akzeptiert. Das Standardformat: 'Y' stellt das aktuelle Jahr dar.",
"date_format_param_label": "Format",
"sequence": "Fortlaufende Nummer",
@@ -1094,9 +1097,9 @@
"already_in_use": "Hinweis bereits in verwendet",
"deleted_message": "Notiz erfolgreich gelöscht",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
"estimate": "Angebot",
"invoice": "Rechnung",
"payment": "Zahlung"
}
}
},
@@ -1171,8 +1174,8 @@
"default_currency_error": "Diese Währung wird bereits in einem der aktiven Anbieter verwendet",
"exchange_help_text": "Wechselkurs eingeben um von {currency} nach {baseCurrency} zu konvertieren",
"currency_freak": "CurrencyFreaks",
"currency_layer": "Currency Layer",
"open_exchange_rate": "Open Exchange Rate",
"currency_layer": "Währungsebene",
"open_exchange_rate": "Öffne Wechselkurs",
"currency_converter": "Währungsumrechner",
"server": "Server",
"url": "URL",
@@ -1209,7 +1212,7 @@
"payment_mode_updated": "Zahlungsart aktualisiert",
"payment_mode_confirm_delete": "Sie werden diese Zahlungsart nicht wiederherstellen können",
"payments_attached": "Diese Zahlungsmethode ist bereits mit anderen Beträgen verknüpft. Bitte löschen Sie die damit verbundenen Beträge, um mit der Löschung fortzufahren.",
"expenses_attached": "This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",
"expenses_attached": "Diese Zahlungsmethode ist bereits mit Ausgaben verknüpft. Bitte löschen Sie die angehängten Ausgaben, um mit der Löschung fortzufahren.",
"deleted_message": "Zahlungsart erfolgreich gelöscht"
},
"expense_category": {
@@ -1233,6 +1236,7 @@
"time_zone": "Zeitzone",
"fiscal_year": "Geschäftsjahr",
"date_format": "Datum-Format",
"time_format": "Time Fromat",
"discount_setting": "Einstellung Rabatt",
"discount_per_item": "Rabatt pro Artikel ",
"discount_setting_description": "Aktivieren Sie diese Option, wenn Sie einzelnen Rechnungspositionen einen Rabatt hinzufügen möchten. Standardmäßig wird der Rabatt direkt zur Rechnung hinzugefügt.",
@@ -1245,6 +1249,7 @@
"select_language": "Sprache auswählen",
"select_time_zone": "Zeitzone auswählen",
"select_date_format": "Wähle das Datumsformat",
"select_time_format": "Select Time Format",
"select_financial_year": "Geschäftsjahr auswählen",
"recurring_invoice_status": "Status der Serienrechnung",
"create_status": "Status erstellen",
@@ -1253,26 +1258,28 @@
"update_status": "Status aktualisieren",
"completed": "Abgeschlossen",
"company_currency_unchangeable": "Die Währung des Unternehmens kann nicht geändert werden",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"january_december": "Januar - Dezember",
"february_january": "Februar - Januar",
"march_february": "März - Februar",
"april_march": "April - März",
"may_april": "Mai - April",
"june_may": "Juni - Mai",
"july_june": "Juli - Juni",
"august_july": "August - Juli",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"december_november": "December - November"
"october_september": "Oktober - September",
"november_october": "November - Oktober",
"december_november": "Dezember - November"
}
},
"update_app": {
"title": "Applikation aktualisieren",
"description": "Sie können InvoiceShelf ganz einfach aktualisieren, indem Sie auf die Schaltfläche unten klicken, um nach einem neuen Update zu suchen.",
"check_update": "Nach Updates suchen",
"insider_consent": "Opt-in for Insider releases. Recommended for testing purposes only.",
"insider_consent": "Opt-in für Insider-Releases. Nur für Testzwecke empfohlen.",
"avail_update": "Neues Update verfügbar",
"next_version": "Nächste Version",
"requirements": "Voraussetzungen",
@@ -1421,14 +1428,15 @@
"time_zone": "Zeitzone",
"fiscal_year": "Geschäftsjahr",
"date_format": "Datumsformat",
"time_format": "Time Format",
"from_address": "Absender",
"username": "Benutzername",
"next": "Weiter",
"continue": "Weiter",
"skip": "Überspringen",
"install_language": {
"title": "Choose your language",
"description": "Select language wizard to install InvoiceShelf"
"title": "Wähle deine Sprache",
"description": "Wähle eine Sprache aus in der InvoiceShelf installiert wird"
},
"database": {
"database": "URL der Seite & Datenbank",
@@ -1441,7 +1449,7 @@
"username": "Datenbank Benutzername",
"db_name": "Datenbank Name",
"db_path": "Datenbankpfad",
"overwrite": "Overwrite existing database and proceed",
"overwrite": "Bestehende Datenbank überschreiben und fortfahren",
"desc": "Erstellen Sie eine Datenbank auf Ihrem Server und legen Sie die Anmeldeinformationen mithilfe des folgenden Formulars fest."
},
"permissions": {
@@ -1459,11 +1467,11 @@
"failed": "Domainüberprüfung fehlgeschlagen. Bitte geben Sie einen gültigen Domainnamen ein.",
"verify_and_continue": "Verifizieren und fortfahren",
"notes": {
"notes": "Notes:",
"not_contain": "App domain should not contain",
"or": "or",
"in_front": "in front of the domain.",
"if_you": "If you're accessing the website on a different port, please mention the port. For example:"
"notes": "Notizen:",
"not_contain": "App-Domain sollte nicht enthalten",
"or": "oder",
"in_front": "vor der Domain.",
"if_you": "Wenn Sie auf die Website über einen anderen Port zugreifen, geben Sie bitte den Port an. Zum Beispiel:"
}
},
"mail": {
@@ -1616,13 +1624,15 @@
"pdf_tax_label": "Steuer",
"pdf_tax_id": "Steuer-Nr.",
"pdf_vat_id": "USt.-ID",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
"pdf_amount_paid": "Bezahlter Betrag",
"pdf_amount_due": "Offener Betrag",
"mail_thanks": "Danke",
"mail_view_estimate": "Angebot ansehen",
"mail_viewed_estimate": ":name hat dieses Angebot angesehen.",
"mail_view_invoice": "Rechnung anzeigen",
"mail_viewed_invoice": ":name hat diese Rechnung angesehen.",
"mail_view_payment": "Zahlung anzeigen",
"notification_view_estimate": "[Benachrichtigung] Angebot angesehen",
"notification_view_invoice": "[Benachrichtigung] Rechnung angesehen",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Sie haben eine neue Rechnung von <b>{COMPANY_NAME}</b>erhalten.</br> Bitte laden Sie sich über den folgenden Button herunter:"
}

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Πελάτες",
"prefix": "Πρόθεμα",
"tax_id": "Tax ID",
"add_customer": "Προσθήκη Πελάτη",
"contacts_list": "Λίστα Πελατών",
"name": "Όνομα",
@@ -285,7 +286,7 @@
"estimates": {
"title": "Προσφορές",
"accept_estimate": "Accept Estimate",
"reject_estimate": "Reject Estimate",
"reject_estimate": "Απόρριψη προσφοράς",
"estimate": "Προσφορά | Προσφορές",
"estimates_list": "Λίστα προσφορών",
"days": "{days} Ημέρες",
@@ -323,9 +324,9 @@
"record_payment": "Καταγραφή Πληρωμής",
"add_estimate": "Νέα Εκτίμηση",
"save_estimate": "Νέα Εκτίμηση",
"cloned_successfully": "Η προσφορά κλωνοποιήθηκε με επιτυχία",
"clone_estimate": "Κλωνοποίηση προσφοράς",
"confirm_clone": "Αυτή η προσφορά θα κλωνοποιηθεί σε μια νέα προσφορά",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Αυτή η εκτίμηση θα χρησιμοποιηθεί για τη δημιουργία ενός νέου τιμολογίου.",
"conversion_message": "Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",
"confirm_send_estimate": "Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",
@@ -381,7 +382,7 @@
},
"invoices": {
"title": "Τιμολόγια",
"download": "Download",
"download": "Λήψη",
"pay_invoice": "Pay Invoice",
"invoices_list": "Λίστα Τιμολογίων",
"invoice_information": "Invoice Information",
@@ -564,7 +565,7 @@
"type_item_description": "Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"
},
"frequency": {
"title": "Συχνότητα",
"title": "Frequency (using cron format)",
"select_frequency": "Επιλογή συχνοτήτων",
"minute": "Λεπτό",
"hour": "Ώρα",
@@ -634,7 +635,7 @@
"updated_message": "Η πληρωμή εστάλη επιτυχώς",
"deleted_message": "Ο υπολογισμός διαγράφηκε επιτυχώς",
"invalid_amount_message": "Το ποσό δεν είναι έγκυρο",
"amount_due": "Due Amount"
"amount_due": "Ποσό Οφειλής"
},
"expenses": {
"title": "Έξοδα",
@@ -863,6 +864,7 @@
"primary_currency": "Κύριο Νόμισμα",
"timezone": "Ζώνη Ώρας",
"date_format": "Μορφή Ημερομηνίας",
"time_format": "Time Format",
"currencies": {
"title": "Συνάλλαγμα",
"currency": "Νόμισμα",
@@ -989,6 +991,7 @@
"delimiter_description": "Ενιαίος χαρακτήρας για τον καθορισμό του ορίου μεταξύ 2 ξεχωριστών στοιχείων. Από προεπιλογή το σετ του -",
"delimiter_param_label": "Τιμή Οριοθέτη",
"date_format": "Μορφή Ημερομηνίας",
"time_format": "Time Format",
"date_format_description": "Ένα τοπικό πεδίο ημερομηνίας και ώρας που δέχεται μια παράμετρο μορφής. Η προεπιλεγμένη μορφή: 'Y' εμφανίζει το τρέχον έτος.",
"date_format_param_label": "Μορφή",
"sequence": "Αλληλουχία",
@@ -1094,7 +1097,7 @@
"already_in_use": "Το όνομα είναι ήδη σε χρήση",
"deleted_message": "Ο ρόλος διαγράφηκε με επιτυχία",
"types": {
"estimate": "Estimate",
"estimate": "Προσφορά",
"invoice": "Invoice",
"payment": "Payment"
}
@@ -1233,6 +1236,7 @@
"time_zone": "Ζώνη Ώρας",
"fiscal_year": "Οικονομικό έτος",
"date_format": "Μορφή Ημερομηνίας",
"time_format": "Time Fromat",
"discount_setting": "Ρυθμίσεις Λογαριασμού",
"discount_per_item": "Έκπτωση Ανά Στοιχείο ",
"discount_setting_description": "Ενεργοποιήστε το αν θέλετε να προσθέσετε έκπτωση σε μεμονωμένα στοιχεία τιμολογίου. Από προεπιλογή, η έκπτωση προστίθεται απευθείας στο τιμολόγιο.",
@@ -1245,6 +1249,7 @@
"select_language": "Επιλογή Γλώσσας",
"select_time_zone": "Επιλέξτε ζώνη ώρας",
"select_date_format": "Μορφή σύντομης ημερομηνίας",
"select_time_format": "Select Time Format",
"select_financial_year": "Επιλογή Οικονομικού Έτους",
"recurring_invoice_status": "Επαναλαμβανόμενα τιμολόγια",
"create_status": "Δημιουργία κατάστασης",
@@ -1253,6 +1258,8 @@
"update_status": "Ενημέρωση Κατάστασης",
"completed": "Ολοκληρώθηκε",
"company_currency_unchangeable": "Το νόμισμα της εταιρείας δεν μπορεί να αλλάξει",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Ζώνη Ώρας",
"fiscal_year": "Οικονομικό έτος",
"date_format": "Μορφή Ημερομηνίας",
"time_format": "Time Format",
"from_address": "Διεύθυνση Αποστολής",
"username": "Όνομα Χρήστη",
"next": "Επόμενο",
@@ -1565,7 +1573,7 @@
"invalid_address": "Please enter a valid address.",
"invalid_key": "Please enter valid key.",
"invalid_state": "Please enter a valid state.",
"invalid_city": "Please enter a valid city.",
"invalid_city": "Παρακαλούμε εισάγετε μια έγκυρη πόλη.",
"invalid_postal_code": "Please enter a valid zip.",
"invalid_format": "Please enter valid query string format.",
"api_error": "Server not responding.",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Φόρος",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
@@ -1624,5 +1634,5 @@
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Λάβατε ένα νέο τιμολόγιο από <b>{COMPANY_NAME}</b>.</br> Κάντε λήψη χρησιμοποιώντας το παρακάτω κουμπί:"
}

View File

@@ -100,16 +100,35 @@
"pay_invoice": "Pay Invoice",
"login_successfully": "Logged in successfully!",
"logged_out_successfully": "Logged out successfully",
"mark_as_default": "Mark as default"
"mark_as_default": "Mark as default",
"no_data_found": "No data found",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
},
"copy_to_clipboard": "Copy to Clipboard"
},
"dashboard": {
"select_year": "Select year",
"cards": {
"due_amount": "Amount Due",
"customers": "Customers",
"invoices": "Invoices",
"estimates": "Estimates",
"payments": "Payments"
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
},
"chart_info": {
"total_sales": "Sales",
@@ -172,6 +191,7 @@
"customers": {
"title": "Customers",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Add Customer",
"contacts_list": "Customer List",
"name": "Name",
@@ -304,6 +324,9 @@
"record_payment": "Record Payment",
"add_estimate": "Add Estimate",
"save_estimate": "Save Estimate",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "This estimate will be used to create a new Invoice.",
"conversion_message": "Invoice created successful",
"confirm_send_estimate": "This estimate will be sent via email to the customer",
@@ -542,13 +565,24 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
"day_month": "Day of month",
"month": "Month",
"day_week": "Day of week"
"day_week": "Day of week",
"every_minute": "Every Minute",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
},
"confirm_delete": "You will not be able to recover this Invoice | You will not be able to recover these Invoices",
"created_message": "Recurring Invoice created successfully",
@@ -557,7 +591,12 @@
"marked_as_sent_message": "Recurring Invoice marked as sent successfully",
"user_email_does_not_exist": "User email does not exist",
"something_went_wrong": "something went wrong",
"invalid_due_amount_message": "Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."
"invalid_due_amount_message": "Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue.",
"limit": {
"none": "None",
"date": "Date",
"count": "Count"
}
},
"payments": {
"title": "Payments",
@@ -595,7 +634,8 @@
"created_message": "Payment created successfully",
"updated_message": "Payment updated successfully",
"deleted_message": "Payment deleted successfully | Payments deleted successfully",
"invalid_amount_message": "Payment amount is invalid"
"invalid_amount_message": "Payment amount is invalid",
"amount_due": "Due Amount"
},
"expenses": {
"title": "Expenses",
@@ -700,7 +740,8 @@
"installed": "Installed",
"no_modules_installed": "No Modules Installed Yet!",
"disable_warning": "All the settings for this particular will be reverted.",
"what_you_get": "What you get"
"what_you_get": "What you get",
"sign_up_and_get_token": "Sign up & Get Token"
},
"users": {
"title": "Users",
@@ -752,7 +793,11 @@
"date_range": "Select Date Range",
"to_date": "To Date",
"from_date": "From Date",
"report_type": "Report Type"
"report_type": "Report Type",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
}
},
"taxes": {
"taxes": "Taxes",
@@ -819,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -920,7 +966,14 @@
"added_message": "Custom Field added successfully",
"press_enter_to_add": "Press enter to add new option",
"model_in_use": "Cannot update model for fields which are already in use.",
"type_in_use": "Cannot update type for fields which are already in use."
"type_in_use": "Cannot update type for fields which are already in use.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"estimate": "Estimate",
"expense": "Expense",
"payment": "Payment"
}
},
"customization": {
"customization": "customization",
@@ -938,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1041,7 +1095,12 @@
"note_updated": "Note Updated successfully",
"note_confirm_delete": "You will not be able to recover this Note",
"already_in_use": "Note is already in use",
"deleted_message": "Note deleted successfully"
"deleted_message": "Note deleted successfully",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
}
}
},
"account_settings": {
@@ -1177,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1189,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1196,12 +1257,29 @@
"on_hold": "On Hold",
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed"
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"december_november": "December - November"
}
},
"update_app": {
"title": "Update App",
"description": "You can easily update InvoiceShelf by checking for a new update by clicking the button below",
"check_update": "Check for updates",
"insider_consent" : "Opt-in for Insider releases. Recommended for testing purposes only.",
"avail_update": "New Update available",
"next_version": "Next version",
"requirements": "Requirements",
@@ -1350,11 +1428,16 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
"continue": "Continue",
"skip": "Skip",
"install_language": {
"title": "Choose your language",
"description": "Select language wizard to install InvoiceShelf"
},
"database": {
"database": "Site URL & Database",
"connection": "Database Connection",
@@ -1366,6 +1449,7 @@
"username": "Database Username",
"db_name": "Database Name",
"db_path": "Database Path",
"overwrite": "Overwrite existing database and proceed",
"desc": "Create a database on your server and set the credentials using the form below."
},
"permissions": {
@@ -1381,7 +1465,14 @@
"verify_now": "Verify Now",
"success": "Domain Verify Successfully.",
"failed": "Domain verification failed. Please enter valid domain name.",
"verify_and_continue": "Verify And Continue"
"verify_and_continue": "Verify And Continue",
"notes": {
"notes" : "Notes:",
"not_contain" : "App domain should not contain",
"or" : "or",
"in_front": "in front of the domain.",
"if_you": "If you're accessing the website on a different port, please mention the port. For example:"
}
},
"mail": {
"host": "Mail Host",
@@ -1532,5 +1623,16 @@
"pdf_received_from": "Received from:",
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID"
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
}

View File

@@ -1,6 +1,6 @@
{
"navigation": {
"dashboard": "Tablero",
"dashboard": "Dashboard",
"customers": "Clientes",
"items": "Artículos",
"invoices": "Facturas",
@@ -47,7 +47,7 @@
"delete": "Eliminar",
"edit": "Editar",
"view": "Ver",
"add_new_item": "Agregar ítem nuevo",
"add_new_item": "Agregar un Nuevo Artículo",
"clear_all": "Limpiar todo",
"showing": "Mostrar",
"of": "de",
@@ -101,25 +101,25 @@
"login_successfully": "Logeado Satisfactoriamente!",
"logged_out_successfully": "Logeado Satisfactoriamente",
"mark_as_default": "Marcar como predeterminado",
"no_data_found": "No data found",
"no_data_found": "No se encontraron datos",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Anterior",
"next": "Siguiente",
"showing": "Mostrando",
"to": "a",
"of": "de",
"results": "resultados"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Arrastra un archivo aquí o",
"browse": "explorar",
"to_choose": "para elegir un archivo"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "La lista está vacía",
"no_results_found": "No se encontraron resultados"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Copiar al portapapeles"
},
"dashboard": {
"select_year": "Seleccionar año",
@@ -128,7 +128,7 @@
"customers": "Clientes",
"invoices": "Facturas",
"estimates": "Presupuestos",
"payments": "Ver Medios de Pago"
"payments": "Pagos"
},
"chart_info": {
"total_sales": "Ventas",
@@ -191,6 +191,7 @@
"customers": {
"title": "Clientes",
"prefix": "Prefijo",
"tax_id": "ID del Impuesto",
"add_customer": "Agregar cliente",
"contacts_list": "Lista de clientes",
"name": "Nombre",
@@ -323,8 +324,8 @@
"record_payment": "Registro de pago",
"add_estimate": "Agregar presupuesto",
"save_estimate": "Guardar presupuesto",
"cloned_successfully": "Presupuesto clonado con éxito",
"clone_estimate": "Clonar presupuesto",
"cloned_successfully": "Presupuesto clonado correctamente",
"clone_estimate": "Clonar Presupuesto",
"confirm_clone": "Este presupuesto será clonado en un nuevo presupuesto",
"confirm_conversion": "¿Quiere convertir este presupuesto en una factura?",
"conversion_message": "Conversión exitosa",
@@ -564,24 +565,24 @@
"type_item_description": "Descripción del tipo de elemento(opcional)"
},
"frequency": {
"title": "Frecuencia",
"title": "Frecuencia (usando formato cron)",
"select_frequency": "Seleccionar frecuencia",
"minute": "Minuto",
"hour": "Hora",
"day_month": "Día del mes",
"month": "Mes",
"day_week": "Día de la semana",
"every_minute": "Every Minute",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
"every_minute": "Cada Minuto",
"every_30_minute": "Cada 30 Minutos",
"every_hour": "Cada Hora",
"every_2_hour": "Cada 2 Horas",
"every_day_at_midnight": "Todos los días a la medianoche",
"every_week": "Cada Semana",
"every_15_days_at_midnight": "Cada 15 días a medianoche",
"on_the_first_day_of_every_month_at_midnight": "En el primer día de cada mes a las 00:00",
"every_6_month": "Cada 6 Meses",
"every_year_on_the_first_day_of_january_at_midnight": "Cada año el primer día de enero a las 00:00",
"custom": "Personalizado"
},
"confirm_delete": "No podrá recuperar esta factura | No podrás recuperar estas facturas",
"created_message": "Factura recurrente creada con éxito",
@@ -592,9 +593,9 @@
"something_went_wrong": "algo ha ido mal",
"invalid_due_amount_message": "La cantidad total de la factura recurrente no puede ser menor a la cantidad total pagada. Por favor, actualiza la factura o elimina los pagos asociados para continuar.",
"limit": {
"none": "None",
"date": "Date",
"count": "Count"
"none": "Ninguno",
"date": "Fecha",
"count": "Cuenta"
}
},
"payments": {
@@ -634,7 +635,7 @@
"updated_message": "Pago actualizado con éxito",
"deleted_message": "Pago eliminado con éxito | Pagos eliminados exitosamente",
"invalid_amount_message": "El importe del pago no es válido.",
"amount_due": "Due Amount"
"amount_due": "Cantidad Debida"
},
"expenses": {
"title": "Gastos",
@@ -740,7 +741,7 @@
"no_modules_installed": "¡No hay módulos instalados todavía!",
"disable_warning": "Se revertirán todos los ajustes para este particular.",
"what_you_get": "Beneficios que obtiene",
"sign_up_and_get_token": "Sign up & Get Token"
"sign_up_and_get_token": "Regístrate y Consigue Token"
},
"users": {
"title": "Usuarios",
@@ -794,8 +795,8 @@
"from_date": "A partir de la fecha",
"report_type": "Tipo de informe",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Por Cliente",
"by_item": "Por artículo"
}
},
"taxes": {
@@ -863,6 +864,7 @@
"primary_currency": "Moneda primaria",
"timezone": "Zona horaria",
"date_format": "Formato de fecha",
"time_format": "Formato de hora",
"currencies": {
"title": "Monedas",
"currency": "Moneda | Monedas",
@@ -923,7 +925,7 @@
"delete_company": "Eliminar empresa",
"delete_company_description": "Una vez que elimines tu empresa, perderás todos los datos y archivos asociados a ella permanentemente.",
"are_you_absolutely_sure": "¿Estás realmente seguro?",
"delete_company_modal_desc": "Est acción no se puede deshacer. Se eliminará de manera permanente {company} y todos sus datos asociados.",
"delete_company_modal_desc": "Esta acción no se puede deshacer. Esto eliminará de manera permanente {company} y todos sus datos asociados.",
"delete_company_modal_label": "Por favor escribe {company} para confirmar"
},
"custom_fields": {
@@ -935,7 +937,7 @@
"label": "Etiqueta",
"type": "Tipo",
"name": "Nombre",
"slug": "Slug",
"slug": "Nombre corto de URL",
"required": "Necesaria",
"placeholder": "Marcador de posición",
"help_text": "texto de ayuda",
@@ -966,11 +968,11 @@
"model_in_use": "No se puede actualizar el modelo para los campos que ya están en uso.",
"type_in_use": "No se puede actualizar el tipo de los campos que ya están en uso.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"estimate": "Estimate",
"expense": "Expense",
"payment": "Payment"
"customer": "Cliente",
"invoice": "Factura",
"estimate": "Presupuesto",
"expense": "Gasto",
"payment": "Pago"
}
},
"customization": {
@@ -989,6 +991,7 @@
"delimiter_description": "Carácter único para especificar el límite entre 2 componentes separados. Por defecto está configurado en -",
"delimiter_param_label": "Valor delimitador",
"date_format": "Formato de fecha",
"time_format": "Formato de hora",
"date_format_description": "Un campo de fecha y hora local que acepta un parámetro de formato. El formato predeterminado: 'Y' representa el año actual.",
"date_format_param_label": "Formato",
"sequence": "Secuencia",
@@ -1094,9 +1097,9 @@
"already_in_use": "Nota ya está en uso",
"deleted_message": "Nota eliminada correctamente",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
"estimate": "Presupuesto",
"invoice": "Factura",
"payment": "Pago"
}
}
},
@@ -1233,6 +1236,7 @@
"time_zone": "Zona horaria",
"fiscal_year": "Año financiero",
"date_format": "Formato de fecha",
"time_format": "Formato de hora",
"discount_setting": "Ajuste de descuento",
"discount_per_item": "Descuento por artículo",
"discount_setting_description": "Habilítelo si desea agregar Descuento a artículos de factura individuales. Por defecto, los descuentos se agregan directamente a la factura.",
@@ -1245,6 +1249,7 @@
"select_language": "seleccione el idioma",
"select_time_zone": "selecciona la zona horaria",
"select_date_format": "Seleccionar formato de fecha",
"select_time_format": "Seleccionar formato de hora",
"select_financial_year": "seleccione año financiero",
"recurring_invoice_status": "Estado de la factura recurrente",
"create_status": "Crear estado",
@@ -1253,26 +1258,28 @@
"update_status": "Actualizar estado",
"completed": "Completado",
"company_currency_unchangeable": "No se puede cambiar la divisa de la empresa",
"invoice_use_time": "Usar hora en las facturas",
"invoice_use_time_description": "Active esta opción si desea seleccionar la hora exacta de la factura.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"december_november": "December - November"
"january_december": "Enero - Diciembre",
"february_january": "Febrero - Enero",
"march_february": "Marzo - Febrero",
"april_march": "Abril - Marzo",
"may_april": "Mayo - Abril",
"june_may": "Junio - Mayo",
"july_june": "Julio - Junio",
"august_july": "Agosto - Julio",
"september_august": "Septiembre - Agosto",
"october_september": "Octubre - Septiembre",
"november_october": "Noviembre - Octubre",
"december_november": "Diciembre - Noviembre"
}
},
"update_app": {
"title": "Actualizar aplicación",
"description": "Puedes actualizar InvoiceShelf fácilmente comprobando si existe una nueva actualización haciendo clic en el botón de abajo",
"check_update": "Buscar actualizaciones",
"insider_consent": "Opt-in for Insider releases. Recommended for testing purposes only.",
"insider_consent": "Opt-in para versiones anticipadas. Recomendado sólo para fines de prueba.",
"avail_update": "Nueva actualización disponible",
"next_version": "Próxima versión",
"requirements": "Requisitos",
@@ -1402,7 +1409,7 @@
"save_cont": "Guardar y continuar",
"company_info": "Información de la empresa",
"company_info_desc": "Esta información se mostrará en las facturas. Tenga en cuenta que puede editar esto más adelante en la página de configuración.",
"company_name": "nombre de empresa",
"company_name": "Nombre de empresa",
"company_logo": "Logo de la compañía",
"logo_preview": "Vista previa del logotipo",
"preferences": "Preferencias",
@@ -1421,17 +1428,18 @@
"time_zone": "Zona horaria",
"fiscal_year": "Año financiero",
"date_format": "Formato de fecha",
"time_format": "Formato de hora",
"from_address": "Desde la Dirección",
"username": "Nombre de usuario",
"next": "Siguiente",
"continue": "Continuar",
"skip": "Saltar",
"install_language": {
"title": "Choose your language",
"description": "Select language wizard to install InvoiceShelf"
"title": "Elige tu idioma",
"description": "Selecciona el asistente de idioma para instalar InvoiceShelf"
},
"database": {
"database": "URL del sitio y base de datose",
"database": "URL del sitio y base de datos",
"connection": "Conexión de base de datos",
"host": "Host de la base de datos",
"port": "Puerto de la base de datos",
@@ -1441,7 +1449,7 @@
"username": "Nombre de usuario de la base de datos",
"db_name": "Nombre de la base de datos",
"db_path": "Ruta de la base de datos",
"overwrite": "Overwrite existing database and proceed",
"overwrite": "Sobrescribir la base de datos existente y continua",
"desc": "Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario."
},
"permissions": {
@@ -1459,11 +1467,11 @@
"failed": "La verificación del dominio falló. Ingrese un nombre de dominio válido.",
"verify_and_continue": "Verificar y continuar",
"notes": {
"notes": "Notes:",
"not_contain": "App domain should not contain",
"or": "or",
"in_front": "in front of the domain.",
"if_you": "If you're accessing the website on a different port, please mention the port. For example:"
"notes": "Notas:",
"not_contain": "El dominio de la app no debería contener",
"or": "o",
"in_front": "delante del dominio.",
"if_you": "Si estás accediendo al sitio web en un puerto diferente, por favor indica el puerto. Por ejemplo:"
}
},
"mail": {
@@ -1492,9 +1500,9 @@
},
"errors": {
"migrate_failed": "La migración falló",
"database_variables_save_error": "No se puede conectar a la base de datos con los valores proporcionados.",
"database_variables_save_error": "No se puede escribir la configuración al archivo .env. Por favor, revisa los permisos de archivo",
"mail_variables_save_error": "La configuración del correo electrónico ha fallado.",
"connection_failed": "Conexión de base de datos fallida",
"connection_failed": "La conexión a la base de datos falló",
"database_should_be_empty": "La base de datos debe estar vacía"
},
"success": {
@@ -1589,40 +1597,42 @@
"pdf_amount_label": "Cantidad",
"pdf_subtotal": "Subtotal",
"pdf_total": "Total",
"pdf_payment_label": "Pagos",
"pdf_payment_label": "Pago",
"pdf_payment_receipt_label": "RECIBO DE PAGO",
"pdf_payment_date": "Fecha de pago",
"pdf_payment_number": "Numero de pago",
"pdf_payment_number": "Número de pago",
"pdf_payment_mode": "Modo de pago",
"pdf_payment_amount_received_label": "Importe recibido",
"pdf_expense_report_label": "INFORME DE GASTOS",
"pdf_total_expenses_label": "GASTO TOTAL",
"pdf_profit_loss_label": "INFORME PERDIDAS & GANANCIAS",
"pdf_profit_loss_label": "INFORME DE PERDIDAS Y GANANCIAS",
"pdf_sales_customers_label": "Informe de ventas por cliente",
"pdf_sales_items_label": "Informe de ventas por ítem",
"pdf_tax_summery_label": "Informe de ventas impuestos",
"pdf_sales_items_label": "Informe de ventas por artículo",
"pdf_tax_summery_label": "Informe de resumen de impuestos",
"pdf_income_label": "INGRESO",
"pdf_net_profit_label": "GANANCIA NETA",
"pdf_customer_sales_report": "Informe de ventas: Por cliente",
"pdf_total_sales_label": "VENTAS TOTALES",
"pdf_item_sales_label": "Informe de ventas: por artículo",
"pdf_total_sales_label": "VENTA TOTAL",
"pdf_item_sales_label": "Informe de ventas: Por artículo",
"pdf_tax_report_label": "INFORME DE IMPUESTOS",
"pdf_total_tax_label": "TOTAL IMPUESTOS",
"pdf_total_tax_label": "IMPUESTO TOTAL",
"pdf_tax_types_label": "Tipos de impuestos",
"pdf_expenses_label": "Gastos",
"pdf_bill_to": "Cobrar a,",
"pdf_ship_to": "Enviar a,",
"pdf_received_from": "Recibido desde:",
"pdf_received_from": "Recibido de:",
"pdf_tax_label": "Impuesto",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
"pdf_tax_id": "ID de impuesto",
"pdf_vat_id": "ID de IVA",
"pdf_amount_paid": "Importe pagado",
"pdf_amount_due": "Importe pendiente",
"mail_thanks": "Gracias",
"mail_view_estimate": "Ver presupuesto",
"mail_viewed_estimate": ":name ha visto este Presupuesto.",
"mail_view_invoice": "Ver factura",
"mail_viewed_invoice": ":name ha visto esta factura.",
"mail_view_payment": "Ver pago",
"notification_view_estimate": "[Notification] Presupuesto visto",
"notification_view_invoice": "[Notification] Factura vista",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Ha recibido una nueva factura de <b>{COMPANY_NAME}</b>.</br> Por favor descárguela usando el siguiente botón:"
}

View File

@@ -4,7 +4,7 @@
"customers": "مشتریان",
"items": "آیتم ها",
"invoices": "صورت حساب‌ها",
"recurring-invoices": "Recurring Invoices",
"recurring-invoices": "فاکتور تکرار شونده",
"expenses": "هزینه ها",
"estimates": "برآوردها",
"payments": "پرداخت‌ها",
@@ -12,7 +12,7 @@
"settings": "تنظیمات",
"logout": "خروج از حساب",
"users": "کاربران",
"modules": "Modules"
"modules": "ماژول‌ها"
},
"general": {
"add_company": "افزودن شرکت",
@@ -93,42 +93,42 @@
"no_note_found": "یادداشتی پیدا نشد",
"insert_note": "درج یادداشت",
"copied_pdf_url_clipboard": "لینک PDF در حافظه کپی شد!",
"copied_url_clipboard": "Copied url to clipboard!",
"copied_url_clipboard": "لینک PDF در حافظه کپی شد!",
"docs": "مستندات",
"do_you_wish_to_continue": "مایلید ادامه دهید؟",
"note": "یادداشت",
"pay_invoice": "Pay Invoice",
"login_successfully": "Logged in successfully!",
"logged_out_successfully": "Logged out successfully",
"mark_as_default": "Mark as default",
"no_data_found": "No data found",
"pay_invoice": "پرداخت فاکتور",
"login_successfully": "با موفقیت وارد شدید",
"logged_out_successfully": "با موفقیت خارج شدید",
"mark_as_default": "انتخاب به عنوان پیش‌فرض",
"no_data_found": "هیچ دیتایی یافت نشد",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "قبلی",
"next": "بعدی",
"showing": "در حال نمایش",
"to": "به",
"of": "از",
"results": "نتایج"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "یه فایل به اینجا بکشید یا",
"browse": "مرور کردن",
"to_choose": "برای انتخاب فایل"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "لیست خالی است",
"no_results_found": "نتیجه‌ای یافت نشد"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "کپی در کلیپ بورد"
},
"dashboard": {
"select_year": "انتخاب سال",
"cards": {
"due_amount": "مبلغ قابل پرداخت",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
"customers": "مشتری | مشتریان",
"invoices": "فاکتور | فاکتورها",
"estimates": "برآورد | برآوردها",
"payments": "پرداخت | پرداخت ها"
},
"chart_info": {
"total_sales": "فروش ها",
@@ -170,7 +170,7 @@
"no_results_found": "نتیجه‌ای یافت نشد"
},
"company_switcher": {
"label": "SWITCH COMPANY",
"label": "تعویض شرکت",
"no_results_found": "نتیجه‌ای یافت نشد",
"add_new_company": "افزودن شرکت جدید",
"new_company": "شرکت جدید",
@@ -191,6 +191,7 @@
"customers": {
"title": "مشتریان",
"prefix": "پيشوند",
"tax_id": "شناسه مالیاتی",
"add_customer": "افزودن مشتری",
"contacts_list": "لیست مشتریان",
"name": "نام",
@@ -206,8 +207,8 @@
"website": "وب سایت",
"overview": "نمای کلی",
"invoice_prefix": "پیشوند صورتحساب",
"estimate_prefix": "Estimate Prefix",
"payment_prefix": "Payment Prefix",
"estimate_prefix": "پیشوند برآورد",
"payment_prefix": "پیشوند پرداخت",
"enable_portal": "فعال کردن پرتال",
"country": "كشور",
"state": "استان/ایالت",
@@ -216,7 +217,7 @@
"added_on": "افزوده شده در",
"action": "عملیات",
"password": "رمز عبور",
"confirm_password": "Confirm Password",
"confirm_password": "تایید رمز عبور",
"street_number": "خیابان و پلاک",
"primary_currency": "واحد پول اصلی",
"description": "توضیح",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Asiakkaat",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Lisää Asiakas",
"contacts_list": "Asiakasluettelo",
"name": "Nimi",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Ensisijainen valuutta",
"timezone": "Aikavyöhyke",
"date_format": "Päivämäärä muoto",
"time_format": "Time Format",
"currencies": {
"title": "Valuutat",
"currency": "Valuutta | Valuutat",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Aikavyöhyke",
"fiscal_year": "Tilikausi",
"date_format": "Päivämäärä formaatti",
"time_format": "Time Fromat",
"discount_setting": "Alennusten määritys",
"discount_per_item": "Alennus per tuote ",
"discount_setting_description": "Aktivoi tämä jos haluat lisätä alennuksen rivikohtaisesti. Oletuksena, Alennus lisätään suoraan laskun kokonaissummaan.",
@@ -1245,6 +1249,7 @@
"select_language": "Valitse kieli",
"select_time_zone": "Valitse aikavyöhyke",
"select_date_format": "Valitse päivämäärä formaatti",
"select_time_format": "Select Time Format",
"select_financial_year": "Valitse tilikausi",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Aikavyöhyke",
"fiscal_year": "Tilikausi",
"date_format": "päivämäärä formaatti",
"time_format": "Time Format",
"from_address": "Lähettäjän osoite",
"username": "Käyttäjänimi",
"next": "Seuraava",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -27,9 +27,9 @@
"download": "Télécharger",
"from_date": "Du",
"to_date": "Au",
"from": "Du",
"to": "Au",
"ok": "Ok",
"from": "De",
"to": "À",
"ok": "OK",
"yes": "Oui",
"no": "Non",
"sort_by": "Trier par",
@@ -101,7 +101,7 @@
"login_successfully": "Identifié avec succès!",
"logged_out_successfully": "Déconnecté avec succès",
"mark_as_default": "Marquer par défaut",
"no_data_found": "Aucune donnée pour le moment",
"no_data_found": "Aucune donnée trouvée",
"pagination": {
"previous": "Précédent",
"next": "Suivant",
@@ -111,8 +111,8 @@
"results": "résultats"
},
"file_upload": {
"drag_a_file": "Déposez un fichier ici ou",
"browse": "parcourez",
"drag_a_file": "Déposer un fichier ici ou",
"browse": "parcourir",
"to_choose": "pour choisir un fichier"
},
"multiselect": {
@@ -191,6 +191,7 @@
"customers": {
"title": "Clients",
"prefix": "Code client",
"tax_id": "N° fiscal",
"add_customer": "Ajouter un client",
"contacts_list": "Liste de clients",
"name": "Nom",
@@ -564,7 +565,7 @@
"type_item_description": "Description de l'article (facultatif)"
},
"frequency": {
"title": "Fréquence",
"title": "Fréquence (au format cron)",
"select_frequency": "Sélectionner la fréquence",
"minute": "Minute",
"hour": "Heure",
@@ -592,7 +593,7 @@
"something_went_wrong": "une erreur sest produite",
"invalid_due_amount_message": "Le montant total de la facture récurrente ne peut pas être inférieur au montant total payé pour cette facture récurrente. Veuillez mettre à jour la facture ou supprimer les paiements associés pour continuer.",
"limit": {
"none": "Aucun",
"none": "Pas de limite",
"date": "Date",
"count": "Nombre"
}
@@ -740,7 +741,7 @@
"no_modules_installed": "Aucun module installé !",
"disable_warning": "Tous les paramètres de ce module seront réinitialisés.",
"what_you_get": "Ce que vous obtenez",
"sign_up_and_get_token": "Inscrivez-vous et obtenez votre Jeton"
"sign_up_and_get_token": "S'inscrire et obtenir un jeton"
},
"users": {
"title": "Utilisateurs",
@@ -794,8 +795,8 @@
"from_date": "Du",
"report_type": "Trier",
"sort": {
"by_customer": "Par Client",
"by_item": "Par Article"
"by_customer": "Par client",
"by_item": "Par article"
}
},
"taxes": {
@@ -863,6 +864,7 @@
"primary_currency": "Devise principale",
"timezone": "Fuseau horaire",
"date_format": "Format de date",
"time_format": "Time Format",
"currencies": {
"title": "Devises",
"currency": "Devise | Devises",
@@ -907,8 +909,8 @@
"company_info": {
"company_info": "Coordonnées de la société",
"company_name": "Nom",
"tax_id": "Numéro d'identification fiscale",
"vat_id": "Numéro d'identification TVA",
"tax_id": "N° d'identification fiscale (SIREN)",
"vat_id": "N° d'identification TVA",
"company_logo": "Logo",
"section_description": "Saisissez ici les coordonnées de votre entreprise qui s'afficheront sur tous vos documents.",
"phone": "Téléphone",
@@ -922,7 +924,7 @@
"updated_message": "Informations sur la société mises à jour",
"delete_company": "Supprimer la société",
"delete_company_description": "Une fois votre société supprimée, vous perdrez définitivement toutes les données et fichiers qui lui sont associés.",
"are_you_absolutely_sure": "En êtes vous vraiment sûr?",
"are_you_absolutely_sure": "En êtes-vous vraiment sûr ?",
"delete_company_modal_desc": "Cette action ne peut pas être annulée. Cela supprimera définitivement {company} et toutes les données associées.",
"delete_company_modal_label": "Veuillez saisir {company} pour confirmer"
},
@@ -989,6 +991,7 @@
"delimiter_description": "Un caractère servant à séparer deux composants. Par exemple, un trait d'union",
"delimiter_param_label": "Caractère",
"date_format": "Date",
"time_format": "Time Format",
"date_format_description": "Une date qui peut formatée. Par exemple, \"Y\" affichera l'année en cours.",
"date_format_param_label": "Format",
"sequence": "Suite",
@@ -1208,8 +1211,8 @@
"payment_mode_added": "Mode de paiement ajouté",
"payment_mode_updated": "Mode de paiement mis à jour",
"payment_mode_confirm_delete": "Vous ne pourrez pas récupérer ce mode de paiement",
"payments_attached": "This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",
"expenses_attached": "This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",
"payments_attached": "Ce moyen de paiement est déjà utilisé par des paiements. Merci de supprimer les paiements associés avant de procéder à la suppression.",
"expenses_attached": "Ce moyen de paiement est déjà utilisé par des dépenses. Merci de supprimer les dépenses associées avant de procéder à la suppression.",
"deleted_message": "Mode de paiement supprimé"
},
"expense_category": {
@@ -1233,6 +1236,7 @@
"time_zone": "Fuseau horaire",
"fiscal_year": "Exercice fiscal",
"date_format": "Format de date",
"time_format": "Time Fromat",
"discount_setting": "Réglage de remise",
"discount_per_item": "Remise par article",
"discount_setting_description": "Activez cette option si vous souhaitez détailler les remises par article. Par défaut, les remises sont ajoutées au sous-total.",
@@ -1245,6 +1249,7 @@
"select_language": "Choisir la langue",
"select_time_zone": "Sélectionnez le fuseau horaire",
"select_date_format": "Sélectionnez le format de date",
"select_time_format": "Select Time Format",
"select_financial_year": "Exercice fiscal",
"recurring_invoice_status": "Statut de la facture récurrente",
"create_status": "Créer un statut",
@@ -1253,6 +1258,8 @@
"update_status": "Mettre à jour le statut",
"completed": "Terminé",
"company_currency_unchangeable": "La devise de la société ne peut pas être modifiée",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "Janvier - Décembre",
"february_january": "Février - Janvier",
@@ -1262,7 +1269,7 @@
"june_may": "Juin - Mai",
"july_june": "Juillet - Juin",
"august_july": "Aout - Juillet",
"september_august": "Septembre - Aout",
"september_august": "Septembre - Août ",
"october_september": "Octobre - Septembre",
"november_october": "Novembre - Octobre",
"december_november": "Décembre - Novembre"
@@ -1272,7 +1279,7 @@
"title": "Mise à jour",
"description": "Mettez simplement InvoiceShelf à jour en cliquant sur le bouton ci-dessous.",
"check_update": "Rechercher des mises à jour",
"insider_consent": "Opt-in for Insider releases. Recommended for testing purposes only.",
"insider_consent": "Utiliser les versions de test. Recommandé uniquement à des fins de test.",
"avail_update": "Nouvelle mise à jour disponible",
"next_version": "Version suivante",
"requirements": "Spécifications requises",
@@ -1421,6 +1428,7 @@
"time_zone": "Fuseau horaire",
"fiscal_year": "Exercice fiscal",
"date_format": "Format de date",
"time_format": "Time Format",
"from_address": "De l'adresse",
"username": "Nom d'utilisateur",
"next": "Suivant",
@@ -1441,7 +1449,7 @@
"username": "Nom d'utilisateur de la base de données",
"db_name": "Nom de la base de données",
"db_path": "Emplacement de la base de données",
"overwrite": "Overwrite existing database and proceed",
"overwrite": "Écraser la base de données existante et continuer",
"desc": "Créez une base de données sur votre serveur et définissez les informations d'identification à l'aide du formulaire ci-dessous."
},
"permissions": {
@@ -1463,7 +1471,7 @@
"not_contain": "Le domaine de l'application ne doit pas contenir",
"or": "ou",
"in_front": "devant le domaine.",
"if_you": "Si vous accédez au site Web sur un autre port, veuillez mentionner le port. Par exemple :"
"if_you": "Si vous accédez au site Web sur un port différent, veuillez préciser le port. Par exemple :"
}
},
"mail": {
@@ -1614,15 +1622,17 @@
"pdf_ship_to": "Expédier à",
"pdf_received_from": "Reçu de :",
"pdf_tax_label": "Taxe",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_tax_id": "N° fiscal",
"pdf_vat_id": "N° de TVA",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Merci",
"mail_view_estimate": "Voir le Devis",
"mail_viewed_estimate": ":name a consulté ce Devis.",
"mail_view_invoice": "Voir la Facture",
"mail_viewed_invoice": ":name a consulté cette Facture.",
"mail_view_payment": "Voir le Paiement",
"notification_view_estimate": "[Notification] Un Devis a été consulté",
"notification_view_invoice": "[Notification] Une Facture a été consultée",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Vous avez reçu une nouvelle facture de <b>{COMPANY_NAME}</b>.</br> Vous pouvez la télécharger en cliquant sur le bouton :"
"mail_view_estimate": "Voir le devis",
"mail_viewed_estimate": ":name a consulté ce devis.",
"mail_view_invoice": "Voir la facture",
"mail_viewed_invoice": ":name a consulté cette facture.",
"mail_view_payment": "Voir le paiement",
"notification_view_estimate": "[Notification] Devis consulté",
"notification_view_invoice": "[Notification] Facture consultée",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Vous avez reçu une nouvelle facture de <b>{COMPANY_NAME}</b>.</br> Vous pouvez la télécharger en cliquant sur le bouton ci-dessous :"
}

View File

@@ -101,32 +101,32 @@
"login_successfully": "सफलतापूर्वक लॉगिन किया गया",
"logged_out_successfully": "सफलतापूर्वक लॉग आउट किया गया",
"mark_as_default": "डिफ़ॉल्ट के रूप में चिह्नित करें",
"no_data_found": "No data found",
"no_data_found": "डाटा प्राप्त नहीं हुआ",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "पहले का",
"next": "अगला",
"showing": "दिखा रहा है",
"to": "को",
"of": "का",
"results": "परिणाम"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"drag_a_file": "फ़ाइल को यहाँ खींचें.",
"browse": "browse",
"to_choose": "to choose a file"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "सूची खाली है",
"no_results_found": "कोई परिणाम नहीं मिला"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "क्लिपबोर्ड पर नक़ल करें"
},
"dashboard": {
"select_year": "वर्ष चुनें",
"cards": {
"due_amount": "देय राशि",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"customers": "ग्राहक | ग्राहकों",
"invoices": "",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
},
@@ -191,6 +191,7 @@
"customers": {
"title": "ग्राहक",
"prefix": "प्रीफ़िक्स",
"tax_id": "टैक्स आईडी",
"add_customer": "ग्राहक जोड़ें",
"contacts_list": "ग्राहक सूची",
"name": "नाम",
@@ -323,7 +324,7 @@
"record_payment": "रिकॉर्ड भुगतान",
"add_estimate": "अनुमान जोड़ें",
"save_estimate": "अनुमान बचाएं",
"cloned_successfully": "Estimate cloned successfully",
"cloned_successfully": "अनुमान सफलतापूर्वक क्लोन किया गया",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "इस अनुमान का उपयोग एक नया चालान बनाने के लिए किया जाएगा।",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -581,20 +582,20 @@
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
"custom": "स्वनिर्मित"
},
"confirm_delete": "You will not be able to recover this Invoice | You will not be able to recover these Invoices",
"created_message": "Recurring Invoice created successfully",
"confirm_delete": "आप इस चालान को पुनर्प्राप्त नहीं कर पाएंगे | आप इन चालानों को पुनर्प्राप्त नहीं कर पाएंगे",
"created_message": "आवर्ती चालान सफलतापूर्वक बनाया गया",
"updated_message": "Recurring Invoice updated successfully",
"deleted_message": "Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",
"marked_as_sent_message": "Recurring Invoice marked as sent successfully",
"deleted_message": "आवर्ती चालान सफलतापूर्वक हटा दिया गया",
"marked_as_sent_message": "आवर्ती चालान को सफलतापूर्वक भेजा गया के रूप में चिह्नित किया गया",
"user_email_does_not_exist": "User email does not exist",
"something_went_wrong": "something went wrong",
"invalid_due_amount_message": "Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue.",
"invalid_due_amount_message": "कुल चालान राशि इस चालान के लिए कुल भुगतान की गई राशि से कम नहीं हो सकती है। जारी रखने के लिए कृपया इनवॉइस अपडेट करें या संबद्ध भुगतानों को हटा दें।",
"limit": {
"none": "None",
"date": "Date",
"count": "Count"
"none": "कोई नहीं",
"date": "दिनांक",
"count": "गिनती"
}
},
"payments": {
@@ -625,7 +626,7 @@
"no_matching_payments": "कोई मिलान भुगतान नहीं हैं!",
"list_of_payments": "इस खंड में भुगतान की सूची होगी।",
"select_payment_mode": "भुगतान मोड चुनें",
"confirm_mark_as_sent": "This estimate will be marked as sent",
"confirm_mark_as_sent": "इस अनुमान को भेजा गया के रूप में चिह्नित किया जाएगा",
"confirm_send_payment": "यह भुगतान ग्राहक को ईमेल के माध्यम से भेजा जाएगा",
"send_payment_successfully": "भुगतान सफलतापूर्वक भेजा गया",
"something_went_wrong": "कुछ गलत हो गया",
@@ -634,7 +635,7 @@
"updated_message": "भुगतान सफलतापूर्वक अपडेट किया गया",
"deleted_message": "भुगतान सफलतापूर्वक हटाया गया | भुगतान सफलतापूर्वक हटा दिए गए",
"invalid_amount_message": "भुगतान राशि अमान्य है",
"amount_due": "Due Amount"
"amount_due": "बकाया राशि"
},
"expenses": {
"title": "व्यय",
@@ -642,7 +643,7 @@
"select_a_customer": "एक ग्राहक चुनें",
"expense_title": "शीर्षक",
"customer": "ग्राहक",
"currency": "Currency",
"currency": "मुद्रा",
"contact": "संपर्क",
"category": "वर्ग",
"from_date": "इस तारीख से",
@@ -697,7 +698,7 @@
"retype_password": "पासवर्ड पुन: लिखें"
},
"modules": {
"buy_now": "Buy Now",
"buy_now": "अभी खरीदें",
"install": "इंस्टॉल",
"price": "मूल्य",
"download_zip_file": "ज़िप डाउनलोड करे",
@@ -738,7 +739,7 @@
"purchased": "खरीदी",
"installed": "इंस्टॉल हुआ।",
"no_modules_installed": "अभी तक कोई मॉड्यूल स्थापित नहीं है!",
"disable_warning": "All the settings for this particular will be reverted.",
"disable_warning": "इस विशेष के लिए सभी सेटिंग्स पूर्ववत कर दी जाएंगी.",
"what_you_get": "What you get",
"sign_up_and_get_token": "Sign up & Get Token"
},
@@ -768,7 +769,7 @@
"updated_message": "उपयोगकर्ता सफलतापूर्वक अपडेट किया गया",
"deleted_message": "उपयोगकर्ता सफलतापूर्वक हटाया गया | उपयोगकर्ता सफलतापूर्वक हटा दिया गया",
"select_company_role": "Select Role for {company}",
"companies": "Companies"
"companies": "कंपनियों"
},
"reports": {
"title": "रिपोर्ट",
@@ -794,8 +795,8 @@
"from_date": "इस तारीख से",
"report_type": "रिपोर्ट का प्रकार",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "ग्राहक द्वारा",
"by_item": "आइटम द्वारा"
}
},
"taxes": {
@@ -850,11 +851,11 @@
"custom_fields": "कस्टम फील्ड्स",
"payment_modes": "भुगतान के प्रकार",
"notes": "नोट्स",
"exchange_rate": "Exchange Rate",
"address_information": "Address Information"
"exchange_rate": "विनिमय दर",
"address_information": "पते के बारे में जानकारी"
},
"address_information": {
"section_description": " You can update Your Address information using form below."
"section_description": " आप नीचे दिए गए फॉर्म का उपयोग करके अपनी पता जानकारी अपडेट कर सकते हैं"
},
"title": "समायोजन",
"setting": "सेटिंग्स | समायोजन",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

File diff suppressed because it is too large Load Diff

View File

@@ -108,7 +108,7 @@
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"results": "hasil"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
@@ -126,8 +126,8 @@
"cards": {
"due_amount": "Jumlah yang harus dibayar",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"estimates": "Estimate | Estimates",
"invoices": "Faktur | Faktur",
"estimates": "Penawaran | Penawaran",
"payments": "Payment | Payments"
},
"chart_info": {
@@ -191,6 +191,7 @@
"customers": {
"title": "Pelanggan",
"prefix": "Awalan",
"tax_id": "Tax ID",
"add_customer": "Tambah Pelanggan",
"contacts_list": "Daftar Pelanggan",
"name": "Nama",
@@ -283,10 +284,10 @@
"deleted_message": "Item berhasil dihapus | Item berhasil dihapus"
},
"estimates": {
"title": "Perkiraan",
"accept_estimate": "Perkiraan",
"reject_estimate": "Tolak Perkiraan",
"estimate": "Estimasi",
"title": "Penawaran",
"accept_estimate": "Terima Penawaran",
"reject_estimate": "Tolak Penawaran",
"estimate": "Penawaran | Penawaran",
"estimates_list": "Daftar Penawaran",
"days": "{days} Hari",
"months": "{months} Bulan",
@@ -315,7 +316,7 @@
"action": "Aksi",
"notes": "Catatan",
"tax": "Pajak",
"estimate_template": "Template",
"estimate_template": "",
"convert_to_invoice": "Ubah menjadi faktur",
"mark_as_sent": "Tandai sebagai Terkirim",
"send_estimate": "Kirim Penawaran",
@@ -323,9 +324,9 @@
"record_payment": "Rekam Pembayaran",
"add_estimate": "Tambah Penawaran",
"save_estimate": "Simpan Penawaran",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"cloned_successfully": "",
"clone_estimate": "Duplikat Penawaran",
"confirm_clone": "Penawaran ini akan diduplikasi menjadi Penawaran Baru",
"confirm_conversion": "Penawaran ini akan dibuat menjadi faktur baru.",
"conversion_message": "Faktur berhasil dibuat",
"confirm_send_estimate": "Penawaran ini akan dikirim ke pelanggam melalui email",
@@ -564,24 +565,24 @@
"type_item_description": "Deskripsi permintaan (opsional)"
},
"frequency": {
"title": "Frekuensi",
"title": "Frequency (using cron format)",
"select_frequency": "Pilih Frekuensi",
"minute": "Menit",
"hour": "Jam",
"day_month": "Hari dalam bulan",
"month": "Bulan",
"day_week": "Hari dalam minggu",
"every_minute": "Every Minute",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
"every_year_on_the_first_day_of_january_at_midnight": "Every year on the first day of january at 00:00",
"custom": "Custom"
"every_minute": "Setiap Menit",
"every_30_minute": "Setiap 30 Menit",
"every_hour": "Setiap Jam",
"every_2_hour": "Setiap 2 Jam",
"every_day_at_midnight": "Setiap hari pada tengah malam",
"every_week": "Setiap Minggu",
"every_15_days_at_midnight": "Setiap 15 hari pada tengah malam",
"on_the_first_day_of_every_month_at_midnight": "Pada hari pertama setiap bulan pukul 00.00",
"every_6_month": "Setiap 6 Bulan",
"every_year_on_the_first_day_of_january_at_midnight": "Setiap tahun pada hari pertama bulan Januari pukul 00:00",
"custom": "Kustom"
},
"confirm_delete": "Anda tidak akan dapat memulihkan Faktur ini | Anda tidak akan dapat memulihkan Faktur ini",
"created_message": "Faktur Berulang berhasil dibuat",
@@ -592,8 +593,8 @@
"something_went_wrong": "terjadi kesalahan",
"invalid_due_amount_message": "Jumlah Total Faktur Berulang tidak boleh kurang dari jumlah total yang dibayarkan untuk Faktur Berulang ini. Harap perbarui faktur atau hapus pembayaran terkait untuk melanjutkan.",
"limit": {
"none": "None",
"date": "Date",
"none": "Tidak ada",
"date": "Tanggal",
"count": "Count"
}
},
@@ -634,7 +635,7 @@
"updated_message": "Pembayaran berhasil diperbaharui",
"deleted_message": "Pembayaran berhasil dihapus | Pembayaran berhasil dihapus",
"invalid_amount_message": "Jumlah pembayaran tidak valid",
"amount_due": "Due Amount"
"amount_due": "Jumlah Yang Harus Dibayar"
},
"expenses": {
"title": "Pengeluaran",
@@ -740,7 +741,7 @@
"no_modules_installed": "Belum Ada Modul yang Terpasang!",
"disable_warning": "Semua pengaturan untuk saat ini akan dikembalikan.",
"what_you_get": "Apa yang bisa Anda dapatkan",
"sign_up_and_get_token": "Sign up & Get Token"
"sign_up_and_get_token": "Daftar & Dapatkan Token"
},
"users": {
"title": "Pengguna",
@@ -794,79 +795,80 @@
"from_date": "Dari tanggal",
"report_type": "Jenis laporan",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Oleh Pelanggan",
"by_item": "Berdasarkan Barang"
}
},
"taxes": {
"taxes": "Pajak",
"to_date": "To Date",
"from_date": "From Date",
"date_range": "Select Date Range"
"to_date": "Sampai Tanggal",
"from_date": "Dari Tanggal",
"date_range": "Pilih Rentang Tanggal"
},
"errors": {
"required": "Field is required"
},
"invoices": {
"invoice": "Invoice",
"invoice_date": "Invoice Date",
"invoice": "Faktur",
"invoice_date": "Tanggal Faktur",
"due_date": "Due Date",
"amount": "Amount",
"contact_name": "Contact Name",
"contact_name": "Nama Kontak",
"status": "Status"
},
"estimates": {
"estimate": "Estimate",
"estimate_date": "Estimate Date",
"estimate": "Penawaran",
"estimate_date": "Tanggal Penawaran",
"due_date": "Due Date",
"estimate_number": "Estimate Number",
"ref_number": "Ref Number",
"estimate_number": "Nomor Penawaran",
"ref_number": "Nomor Referensi",
"amount": "Amount",
"contact_name": "Contact Name",
"contact_name": "Nama Kontak",
"status": "Status"
},
"expenses": {
"expenses": "Expenses",
"category": "Category",
"date": "Date",
"expenses": "Pengeluaran",
"category": "Kategori",
"date": "Tanggal",
"amount": "Amount",
"to_date": "To Date",
"from_date": "From Date",
"date_range": "Select Date Range"
"from_date": "Dari Tanggal",
"date_range": "Pilih Rentang Tanggal"
}
},
"settings": {
"menu_title": {
"account_settings": "Account Settings",
"company_information": "Company Information",
"customization": "Customization",
"preferences": "Preferences",
"notifications": "Notifications",
"tax_types": "Tax Types",
"expense_category": "Expense Categories",
"update_app": "Update App",
"backup": "Backup",
"account_settings": "Pengaturan Akun",
"company_information": "Informasi Perusahaan",
"customization": "Kustomisasi",
"preferences": "Preferensi",
"notifications": "Notifikasi",
"tax_types": "Jenis Pajak",
"expense_category": "Kategori Pengeluaran",
"update_app": "Perbarui Aplikasi",
"backup": "Cadangan",
"file_disk": "File Disk",
"custom_fields": "Custom Fields",
"payment_modes": "Payment Modes",
"notes": "Notes",
"exchange_rate": "Exchange Rate",
"address_information": "Address Information"
"payment_modes": "Mode Pembayaran",
"notes": "Catatan",
"exchange_rate": "Nilai Tukar",
"address_information": "Informasi Alamat"
},
"address_information": {
"section_description": " Anda dapat memperbarui informasi Alamat Anda dengan menggunakan formulir di bawah ini."
},
"title": "Settings",
"setting": "Settings | Settings",
"general": "General",
"language": "Language",
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"general": "Umum",
"language": "Bahasa",
"primary_currency": "Mata Uang Utama",
"timezone": "Zona Waktu",
"date_format": "Format Tanggal",
"time_format": "Format Waktu",
"currencies": {
"title": "Currencies",
"title": "Mata Uang",
"currency": "Currency | Currencies",
"currencies_list": "Currencies List",
"currencies_list": "Daftar Mata Uang",
"select_currency": "Pilih Mata Uang",
"name": "Nama",
"code": "Kode",
@@ -882,21 +884,21 @@
"add_currency": "Tambah mata uang"
},
"mail": {
"host": "Mail Host",
"host": "Server Surel",
"port": "Mail Port",
"driver": "Mail Driver",
"secret": "Secret",
"mailgun_secret": "Mailgun Secret",
"driver": "Driver Surel",
"secret": "Kunci Rahasia",
"mailgun_secret": "Kunci Rahasia Mailgun",
"mailgun_domain": "Domain",
"mailgun_endpoint": "Mailgun Endpoint",
"ses_secret": "SES Secret",
"ses_key": "SES Key",
"password": "Mail Password",
"username": "Mail Username",
"mail_config": "Mail Configuration",
"ses_secret": "Kunci Rahasia SES",
"ses_key": "Kunci SES",
"password": "Kata Sandi Surel",
"username": "Nama Pengguna Surel",
"mail_config": "Konfigurasi Surel",
"from_name": "From Mail Name",
"from_mail": "From Mail Address",
"encryption": "Mail Encryption",
"encryption": "Enkripsi Surel",
"mail_config_desc": "Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."
},
"pdf": {
@@ -905,26 +907,26 @@
"pdf_layout": "PDF Layout"
},
"company_info": {
"company_info": "Company info",
"company_name": "Company Name",
"company_info": "Info perusahaan",
"company_name": "Nama Perusahaan",
"tax_id": "Tax Identification Number",
"vat_id": "VAT Identification Number",
"company_logo": "Company Logo",
"company_logo": "Logo Perusahaan",
"section_description": "Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",
"phone": "Phone",
"country": "Country",
"state": "State",
"city": "City",
"address": "Address",
"zip": "Zip",
"save": "Save",
"delete": "Delete",
"updated_message": "Company information updated successfully",
"delete_company": "Delete Company",
"delete_company_description": "Once you delete your company, you will lose all the data and files associated with it permanently.",
"are_you_absolutely_sure": "Are you absolutely sure?",
"phone": "Telepon",
"country": "Negara",
"state": "Provinsi",
"city": "Kota",
"address": "Alamat",
"zip": "Kodepos",
"save": "Simpan",
"delete": "Hapus",
"updated_message": "Informasi perusahaan berhasil diperbarui",
"delete_company": "Hapus Perusahaan",
"delete_company_description": "Setelah Anda menghapus perusahaan Anda, semua data dan file yang terkait dengannya akan hilang secara permanen.",
"are_you_absolutely_sure": "Apakah Anda benar-benar yakin?",
"delete_company_modal_desc": "This action cannot be undone. This will permanently delete {company} and all of its associated data.",
"delete_company_modal_label": "Please type {company} to confirm"
"delete_company_modal_label": "Mohon ketik ulang {company} untuk konfirmasi"
},
"custom_fields": {
"title": "Custom Fields",
@@ -934,7 +936,7 @@
"field_name": "Field Name",
"label": "Label",
"type": "Type",
"name": "Name",
"name": "Nama",
"slug": "Slug",
"required": "Required",
"placeholder": "Placeholder",
@@ -945,9 +947,9 @@
"model": "Model",
"help_text_description": "Enter some text to help users understand the purpose of this custom field.",
"suffix": "Suffix",
"yes": "Yes",
"no": "No",
"order": "Order",
"yes": "Ya",
"no": "Tidak",
"order": "Urutan",
"custom_field_confirm_delete": "You will not be able to recover this Custom Field",
"already_in_use": "Custom Field is already in use",
"deleted_message": "Custom Field deleted successfully",
@@ -966,17 +968,17 @@
"model_in_use": "Cannot update model for fields which are already in use.",
"type_in_use": "Cannot update type for fields which are already in use.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"estimate": "Estimate",
"expense": "Expense",
"customer": "Pelanggan",
"invoice": "Faktur",
"estimate": "Penawaran",
"expense": "Pengeluaran",
"payment": "Payment"
}
},
"customization": {
"customization": "customization",
"updated_message": "Company information updated successfully",
"save": "Save",
"updated_message": "Informasi perusahaan berhasil diperbarui",
"save": "Simpan",
"insert_fields": "Insert Fields",
"learn_custom_format": "Learn how to use custom format",
"add_new_component": "Add New Component",
@@ -988,7 +990,8 @@
"delimiter": "Delimiter",
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"date_format": "Format Tanggal",
"time_format": "Format Waktu",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1003,7 +1006,7 @@
"random_sequence_description": "Random alphanumeric string. You can specify the length on the given parameter.",
"random_sequence_param_label": "Sequence Length",
"invoices": {
"title": "Invoices",
"title": "Faktur",
"invoice_number_format": "Invoice Number Format",
"invoice_number_format_description": "Customize how your invoice number gets generated automatically when you create a new invoice.",
"preview_invoice_number": "Preview Invoice Number",
@@ -1015,12 +1018,12 @@
"default_formats": "Default Formats",
"default_formats_description": "Below given formats are used to fill up the fields automatically on invoice creation.",
"default_invoice_email_body": "Default Invoice Email Body",
"company_address_format": "Company Address Format",
"company_address_format": "Format Alamat Perusahaan",
"shipping_address_format": "Shipping Address Format",
"billing_address_format": "Billing Address Format",
"invoice_email_attachment": "Send invoices as attachments",
"billing_address_format": "Format Alamat Penagihan",
"invoice_email_attachment": "Kirim faktur sebagai lampiran",
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
"invoice_settings_updated": "Invoice Settings updated successfully",
"invoice_settings_updated": "Pengaturan Faktur berhasil diperbarui",
"retrospective_edits": "Retrospective Edits",
"allow": "Allow",
"disable_on_invoice_partial_paid": "Disable after partial payment is recorded",
@@ -1029,8 +1032,8 @@
"retrospective_edits_description": " Based on your country's laws or your preference, you can restrict users from editing finalised invoices."
},
"estimates": {
"title": "Estimates",
"estimate_number_format": "Estimate Number Format",
"title": "Penawaran",
"estimate_number_format": "Format Nomor Penawaran",
"estimate_number_format_description": "Customize how your estimate number gets generated automatically when you create a new estimate.",
"preview_estimate_number": "Preview Estimate Number",
"expiry_date": "Expiry Date",
@@ -1041,9 +1044,9 @@
"default_formats": "Default Formats",
"default_formats_description": "Below given formats are used to fill up the fields automatically on estimate creation.",
"default_estimate_email_body": "Default Estimate Email Body",
"company_address_format": "Company Address Format",
"shipping_address_format": "Shipping Address Format",
"billing_address_format": "Billing Address Format",
"company_address_format": "Format Alamat Perusahaan",
"shipping_address_format": "Format Alamat Pengiriman",
"billing_address_format": "Format Alamat Penagihan",
"estimate_email_attachment": "Send estimates as attachments",
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
"estimate_settings_updated": "Estimate Settings updated successfully",
@@ -1051,13 +1054,13 @@
"convert_estimate_description": "Specify what happens to the estimate after it gets converted to an invoice.",
"no_action": "No action",
"delete_estimate": "Delete estimate",
"mark_estimate_as_accepted": "Mark estimate as accepted"
"mark_estimate_as_accepted": "Tandai peawaran sebagai diterima"
},
"payments": {
"title": "Payments",
"payment_number_format": "Payment Number Format",
"title": "Pembayaran",
"payment_number_format": "Format Nomor Pembayaran",
"payment_number_format_description": "Customize how your payment number gets generated automatically when you create a new payment.",
"preview_payment_number": "Preview Payment Number",
"preview_payment_number": "Pratinjau Nomor Pembayaran",
"default_formats": "Default Formats",
"default_formats_description": "Below given formats are used to fill up the fields automatically on payment creation.",
"default_payment_email_body": "Default Payment Email Body",
@@ -1080,67 +1083,67 @@
"deleted_message": "Item Unit deleted successfully"
},
"notes": {
"title": "Notes",
"title": "Catatan",
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
"notes": "Notes",
"type": "Type",
"add_note": "Add Note",
"add_new_note": "Add New Note",
"name": "Name",
"edit_note": "Edit Note",
"note_added": "Note added successfully",
"note_updated": "Note Updated successfully",
"add_note": "Tambahkan Catatan",
"add_new_note": "Tambahkan Catatan Baru",
"name": "Nama",
"edit_note": "Ubah Catatan",
"note_added": "Catatan berhasil ditambahkan",
"note_updated": "Catatan berhasil diperbaharui",
"note_confirm_delete": "You will not be able to recover this Note",
"already_in_use": "Note is already in use",
"deleted_message": "Note deleted successfully",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
"estimate": "Penawaran",
"invoice": "Faktur",
"payment": "Pembayaran"
}
}
},
"account_settings": {
"profile_picture": "Profile Picture",
"name": "Name",
"email": "Email",
"password": "Password",
"confirm_password": "Confirm Password",
"account_settings": "Account Settings",
"save": "Save",
"profile_picture": "Foto Profil",
"name": "Nama",
"email": "Surel",
"password": "Kata Sandi",
"confirm_password": "Konfirmasi Kata Sandi",
"account_settings": "Pengaturan Akun",
"save": "Simpan",
"section_description": "You can update your name, email & password using the form below.",
"updated_message": "Account Settings updated successfully"
},
"user_profile": {
"name": "Name",
"email": "Email",
"password": "Password",
"confirm_password": "Confirm Password"
"name": "Nama",
"email": "Surel",
"password": "Kata Sandi",
"confirm_password": "Konfirmasi Kata Sandi"
},
"notification": {
"title": "Notifications",
"title": "Notifikasi",
"email": "Send Notifications to",
"description": "Which email notifications would you like to receive when something changes?",
"invoice_viewed": "Invoice viewed",
"invoice_viewed": "Faktur dilihat",
"invoice_viewed_desc": "When your customer views the invoice sent via invoiceshelf dashboard.",
"estimate_viewed": "Estimate viewed",
"estimate_viewed": "Penawaran dilihat",
"estimate_viewed_desc": "When your customer views the estimate sent via invoiceshelf dashboard.",
"save": "Save",
"save": "Simpan",
"email_save_message": "Email saved successfully",
"please_enter_email": "Please Enter Email"
},
"roles": {
"title": "Roles",
"description": "Manage the roles & permissions of this company",
"save": "Save",
"save": "Simpan",
"add_new_role": "Add New Role",
"role_name": "Role Name",
"added_on": "Added on",
"add_role": "Add Role",
"edit_role": "Edit Role",
"name": "Name",
"name": "Nama",
"permission": "Permission | Permissions",
"select_all": "Select All",
"select_all": "Pilih Semua",
"none": "None",
"confirm_delete": "You will not be able to recover this Role",
"created_message": "Role created successfully",
@@ -1152,14 +1155,14 @@
"exchange_rate": "Exchange Rate",
"title": "Fix Currency Exchange issues",
"description": "Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",
"drivers": "Drivers",
"drivers": "Driver",
"new_driver": "Add New Provider",
"edit_driver": "Edit Provider",
"select_driver": "Select Driver",
"select_driver": "Pilih Driver",
"update": "select exchange rate ",
"providers_description": "Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",
"key": "API Key",
"name": "Name",
"name": "Nama",
"driver": "Driver",
"is_default": "IS DEFAULT",
"currency": "Currencies",
@@ -1175,7 +1178,7 @@
"open_exchange_rate": "Open Exchange Rate",
"currency_converter": "Currency Converter",
"server": "Server",
"url": "URL",
"url": "Alamat Web",
"active": "Active",
"currency_help_text": "This provider will only be used on above selected currencies",
"currency_in_used": "The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."
@@ -1190,9 +1193,9 @@
"tax_per_item": "Tax Per Item",
"tax_name": "Tax Name",
"compound_tax": "Compound Tax",
"percent": "Percent",
"action": "Action",
"tax_setting_description": "Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",
"percent": "Persen",
"action": "Aksi",
"tax_setting_description": "Aktifkan ini jika Anda ingin menambahkan pajak ke masing-masing item faktur. Secara bawaan, pajak ditambahkan langsung ke faktur.",
"created_message": "Tax type created successfully",
"updated_message": "Tax type updated successfully",
"deleted_message": "Tax type deleted successfully",
@@ -1214,69 +1217,73 @@
},
"expense_category": {
"title": "Expense Categories",
"action": "Action",
"action": "Aksi",
"description": "Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.",
"add_new_category": "Add New Category",
"add_category": "Add Category",
"edit_category": "Edit Category",
"category_name": "Category Name",
"category_description": "Description",
"created_message": "Expense Category created successfully",
"deleted_message": "Expense category deleted successfully",
"updated_message": "Expense category updated successfully",
"add_new_category": "Tambahkan Kategori Baru",
"add_category": "Tambah Kategori",
"edit_category": "Edit Kategori",
"category_name": "Nama Kategori",
"category_description": "Deskripsi",
"created_message": "Kategori Pengeluaran telah berhasil dibuat",
"deleted_message": "Kategori Pengeluaran telah berhasil dihapus",
"updated_message": "Kategori Pengeluaran berhasil diperbaharui",
"confirm_delete": "You will not be able to recover this Expense Category",
"already_in_use": "Category is already in use"
"already_in_use": "Kategori sudah digunakan"
},
"preferences": {
"currency": "Currency",
"default_language": "Default Language",
"time_zone": "Time Zone",
"currency": "Mata Uang",
"default_language": "Bahasa bawaan",
"time_zone": "Zona Waktu",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"date_format": "Format Tanggal",
"time_format": "Format Waktu",
"discount_setting": "Pengaturan Diskon",
"discount_per_item": "Diskon Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
"expire_public_links": "Automatically Expire Public Links",
"expire_setting_description": "Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",
"save": "Save",
"save": "Simpan",
"preference": "Preference | Preferences",
"general_settings": "Default preferences for the system.",
"updated_message": "Preferences updated successfully",
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_language": "Pilih Bahasa",
"select_time_zone": "Pilih Zona Waktu",
"select_date_format": "Pilih Format Tanggal",
"select_time_format": "Pilih Format Tanggal",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
"active": "Active",
"on_hold": "On Hold",
"active": "Aktif",
"on_hold": "Ditangguhkan",
"update_status": "Update Status",
"completed": "Completed",
"completed": "Selesai",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"december_november": "December - November"
"january_december": "Januari - Desember",
"february_january": "Februari - Januari",
"march_february": "Maret - Februari",
"april_march": "April - Maret",
"may_april": "Mei - April",
"june_may": "Juni - Mei",
"july_june": "Juli - Juni",
"august_july": "Agustus - Juli",
"september_august": "September - Agustus",
"october_september": "Oktober - September",
"november_october": "November - Oktober",
"december_november": "Desember - November"
}
},
"update_app": {
"title": "Update App",
"title": "Perbarui Aplikasi",
"description": "You can easily update InvoiceShelf by checking for a new update by clicking the button below",
"check_update": "Check for updates",
"insider_consent": "Opt-in for Insider releases. Recommended for testing purposes only.",
"avail_update": "New Update available",
"next_version": "Next version",
"requirements": "Requirements",
"update": "Update Now",
"update": "Perbarui Sekarang",
"update_progress": "Update in progress...",
"progress_text": "It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes",
"update_success": "App has been updated! Please wait while your browser window gets reloaded automatically.",
@@ -1320,7 +1327,7 @@
"description": "By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",
"created_at": "created at",
"dropbox": "dropbox",
"name": "Name",
"name": "Nama",
"driver": "Driver",
"disk_type": "Type",
"disk_name": "Disk Name",
@@ -1330,19 +1337,19 @@
"local_root": "local Root",
"public_driver": "Public Driver",
"public_root": "Public Root",
"public_url": "Public URL",
"public_url": "Alamat Web Publik",
"public_visibility": "Public Visibility",
"media_driver": "Media Driver",
"media_root": "Media Root",
"aws_driver": "AWS Driver",
"aws_key": "AWS Key",
"aws_secret": "AWS Secret",
"aws_driver": "Driver AWS",
"aws_key": "Kunci AWS",
"aws_secret": "Kunci Rahasia AWS",
"aws_region": "AWS Region",
"aws_bucket": "AWS Bucket",
"aws_root": "AWS Root",
"s3_endpoint": "S3 Endpoint",
"s3_key": "S3 Key",
"s3_secret": "S3 Secret",
"s3_key": "Kunci S3",
"s3_secret": "Kunci Rahasia S3",
"s3_region": "S3 Region",
"s3_bucket": "S3 Bucket",
"s3_root": "S3 Root",
@@ -1353,13 +1360,13 @@
"do_spaces_bucket": "Do Spaces Bucket",
"do_spaces_endpoint": "Do Spaces Endpoint",
"do_spaces_root": "Do Spaces Root",
"dropbox_type": "Dropbox Type",
"dropbox_token": "Dropbox Token",
"dropbox_key": "Dropbox Key",
"dropbox_secret": "Dropbox Secret",
"dropbox_app": "Dropbox App",
"dropbox_root": "Dropbox Root",
"default_driver": "Default Driver",
"dropbox_type": "Jenis Dropbox",
"dropbox_token": "Token Dropbox",
"dropbox_key": "Kunci Dropbox",
"dropbox_secret": "Kunci Rahasia Dropbox",
"dropbox_app": "Aplikasi Dropbox",
"dropbox_root": "Root Dropbox",
"default_driver": "Driver Bawaan",
"is_default": "IS DEFAULT",
"set_default_disk": "Set Default Disk",
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
@@ -1369,7 +1376,7 @@
"select_disk": "Select Disk",
"disk_settings": "Disk Settings",
"confirm_delete": "Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from InvoiceShelf",
"action": "Action",
"action": "Aksi",
"edit_file_disk": "Edit File Disk",
"success_create": "Disk added successfully",
"success_update": "Disk updated successfully",
@@ -1395,54 +1402,55 @@
"wizard": {
"account_info": "Account Information",
"account_info_desc": "Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.",
"name": "Name",
"email": "Email",
"password": "Password",
"confirm_password": "Confirm Password",
"save_cont": "Save & Continue",
"company_info": "Company Information",
"name": "Nama",
"email": "Surel",
"password": "Kata Sandi",
"confirm_password": "Konfirmasi Kata Sandi",
"save_cont": "Simpan & Lanjutkan",
"company_info": "Informasi Perusahaan",
"company_info_desc": "This information will be displayed on invoices. Note that you can edit this later on settings page.",
"company_name": "Company Name",
"company_logo": "Company Logo",
"logo_preview": "Logo Preview",
"preferences": "Company Preferences",
"company_name": "Nama Perusahaan",
"company_logo": "Logo Perusahaan",
"logo_preview": "Pratinjau Logo",
"preferences": "Preferensi Perusahaan",
"preferences_desc": "Specify the default preferences for this company.",
"currency_set_alert": "The company's currency cannot be changed later.",
"country": "Country",
"state": "State",
"city": "City",
"address": "Address",
"street": "Street1 | Street2",
"phone": "Phone",
"zip_code": "Zip Code",
"country": "Negara",
"state": "Provinsi",
"city": "Kota",
"address": "Alamat",
"street": "Jalan1 | Jalan2",
"phone": "Telepon",
"zip_code": "Kode Pos",
"go_back": "Go Back",
"currency": "Currency",
"language": "Language",
"time_zone": "Time Zone",
"currency": "Mata Uang",
"language": "Bahasa",
"time_zone": "Zona Waktu",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"date_format": "Format Tanggal",
"time_format": "Format Waktu",
"from_address": "From Address",
"username": "Username",
"username": "Nama Pengguna",
"next": "Next",
"continue": "Continue",
"skip": "Skip",
"skip": "Lewati",
"install_language": {
"title": "Choose your language",
"title": "Pilih bahasa",
"description": "Select language wizard to install InvoiceShelf"
},
"database": {
"database": "Site URL & Database",
"connection": "Database Connection",
"host": "Database Host",
"port": "Database Port",
"password": "Database Password",
"app_url": "App URL",
"app_domain": "App Domain",
"username": "Database Username",
"db_name": "Database Name",
"db_path": "Database Path",
"database": "Alamat Situs Web dan Basisdata",
"connection": "Koneksi Basis Data",
"host": "Server Basisdata",
"port": "Port Basisdata",
"password": "Kata Sandi Basisdata",
"app_url": "Alamat Web Aplikasi",
"app_domain": "Domain Aplikasi",
"username": "Nama Pengguna Basisdata",
"db_name": "Nama Basis Data",
"db_path": "Jalur Basis Data",
"overwrite": "Overwrite existing database and proceed",
"desc": "Create a database on your server and set the credentials using the form below."
"desc": "Buat database di server kamu dan atur kredensial menggunakan formulir di bawah ini."
},
"permissions": {
"permissions": "Permissions",
@@ -1451,15 +1459,15 @@
"permission_desc": "Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."
},
"verify_domain": {
"title": "Domain Verification",
"title": "Verifikasi Domain",
"desc": "InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",
"app_domain": "App Domain",
"verify_now": "Verify Now",
"success": "Domain Verify Successfully.",
"failed": "Domain verification failed. Please enter valid domain name.",
"verify_and_continue": "Verify And Continue",
"app_domain": "Domain Aplikasi",
"verify_now": "Verifikasi Sekarang",
"success": "Verifikasi Domain berhasil.",
"failed": "Verifikasi Domain gagal, Tolong masukkan Nama Domain yang valid.",
"verify_and_continue": "Verifikasi dan Lanjutkan",
"notes": {
"notes": "Notes:",
"notes": "Catatan:",
"not_contain": "App domain should not contain",
"or": "or",
"in_front": "in front of the domain.",
@@ -1467,47 +1475,47 @@
}
},
"mail": {
"host": "Mail Host",
"port": "Mail Port",
"driver": "Mail Driver",
"secret": "Secret",
"mailgun_secret": "Mailgun Secret",
"host": "Server Surel",
"port": "Port Surel",
"driver": "Driver Surel",
"secret": "Kunci Rahasia",
"mailgun_secret": "Kunci Rahasia Mailgun",
"mailgun_domain": "Domain",
"mailgun_endpoint": "Mailgun Endpoint",
"ses_secret": "SES Secret",
"ses_key": "SES Key",
"password": "Mail Password",
"username": "Mail Username",
"mail_config": "Mail Configuration",
"ses_secret": "Kunci Rahasia SES",
"ses_key": "Kunci SES",
"password": "Kata Sandi Surel",
"username": "Nama Pengguna Surel",
"mail_config": "Konfigurasi Surel",
"from_name": "From Mail Name",
"from_mail": "From Mail Address",
"encryption": "Mail Encryption",
"encryption": "Enkripsi Surel",
"mail_config_desc": "Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."
},
"req": {
"system_req": "System Requirements",
"php_req_version": "Php (version {version} required)",
"php_req_version": "Php (diperlukan versi {version})",
"check_req": "Check Requirements",
"system_req_desc": "InvoiceShelf has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below."
"system_req_desc": "InvoiceShelf memiliki beberapa persyaratan server. Pastikan serverAnda memiliki versi php yang diperlukan dan semua ekstensi yang disebutkan di bawah ini."
},
"errors": {
"migrate_failed": "Migrate Failed",
"migrate_failed": "Migrasi Gagal",
"database_variables_save_error": "Cannot write configuration to .env file. Please check its file permissions",
"mail_variables_save_error": "Email configuration failed.",
"connection_failed": "Database connection failed",
"mail_variables_save_error": "Konfigurasi surel gagal.",
"connection_failed": "Koneksi ke Basis data gagal",
"database_should_be_empty": "Database should be empty"
},
"success": {
"mail_variables_save_successfully": "Email configured successfully",
"mail_variables_save_successfully": "Surel berhasil dikonfigurasi",
"database_variables_save_successfully": "Database configured successfully."
}
},
"validation": {
"invalid_phone": "Invalid Phone Number",
"invalid_url": "Invalid url (ex: http://www.invoiceshelf.com)",
"invalid_domain_url": "Invalid url (ex: invoiceshelf.com)",
"invalid_url": "Alamat web tidak valid (contoh: http://www.invoiceshelf.com)",
"invalid_domain_url": "Alamat web tidak valid (contoh: invoiceshelf.com)",
"required": "Field is required",
"email_incorrect": "Incorrect Email.",
"email_incorrect": "Surel Salah.",
"email_already_taken": "The email has already been taken.",
"email_does_not_exist": "User with given email doesn't exist",
"item_unit_already_taken": "This item unit name has already been taken",
@@ -1568,31 +1576,31 @@
"invalid_city": "Please enter a valid city.",
"invalid_postal_code": "Please enter a valid zip.",
"invalid_format": "Please enter valid query string format.",
"api_error": "Server not responding.",
"api_error": "Server Tidak Menanggapi.",
"feature_not_enabled": "Feature not enabled.",
"request_limit_met": "Api request limit exceeded.",
"address_incomplete": "Incomplete Address"
},
"pdf_estimate_label": "Estimate",
"pdf_estimate_number": "Estimate Number",
"pdf_estimate_date": "Estimate Date",
"pdf_estimate_label": "Penawaran",
"pdf_estimate_number": "Nomor Penawaran",
"pdf_estimate_date": "Tanggal Penawaran",
"pdf_estimate_expire_date": "Expiry date",
"pdf_invoice_label": "Invoice",
"pdf_invoice_number": "Invoice Number",
"pdf_invoice_date": "Invoice Date",
"pdf_invoice_label": "Faktur",
"pdf_invoice_number": "Nomor Faktur",
"pdf_invoice_date": "Tanggal Faktur",
"pdf_invoice_due_date": "Due date",
"pdf_notes": "Notes",
"pdf_notes": "Catatan",
"pdf_items_label": "Items",
"pdf_quantity_label": "Quantity",
"pdf_price_label": "Price",
"pdf_discount_label": "Discount",
"pdf_price_label": "Harga",
"pdf_discount_label": "Diskon",
"pdf_amount_label": "Amount",
"pdf_subtotal": "Subtotal",
"pdf_total": "Total",
"pdf_payment_label": "Payment",
"pdf_payment_label": "Pembayaran",
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
"pdf_payment_date": "Payment Date",
"pdf_payment_number": "Payment Number",
"pdf_payment_number": "Nomor Pembayaran",
"pdf_payment_mode": "Payment Mode",
"pdf_payment_amount_received_label": "Amount Received",
"pdf_expense_report_label": "EXPENSES REPORT",
@@ -1616,12 +1624,14 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Terima kasih",
"mail_view_estimate": "Lihat Penawaran",
"mail_viewed_estimate": ":name melihat Penawaran ini.",
"mail_view_invoice": "Lihat Faktur",
"mail_viewed_invoice": ":name melihat Faktur ini.",
"mail_view_payment": "Lihat Pembayaran",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Clienti",
"prefix": "Prefisso",
"tax_id": "Tax ID",
"add_customer": "Aggiungi cliente",
"contacts_list": "Lista clienti",
"name": "Nome",
@@ -323,9 +324,9 @@
"record_payment": "Registra Pagamento",
"add_estimate": "Aggiungi Preventivo",
"save_estimate": "Salva Preventivo",
"cloned_successfully": "Preventivo clonato con successo",
"clone_estimate": "Clonare preventivo",
"confirm_clone": "Questo preventivo sarà clonato in un nuovo preventivo",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Questo preventivo verrà usato per generare una nuova fattura.",
"conversion_message": "Fattura creata",
"confirm_send_estimate": "Questo preventivo verrà inviato al cliente via mail",
@@ -564,7 +565,7 @@
"type_item_description": "Tipo Descrizione Articolo (Opzionale)"
},
"frequency": {
"title": "Frequenza",
"title": "Frequency (using cron format)",
"select_frequency": "Seleziona Frequenza",
"minute": "Minuto",
"hour": "Ora",
@@ -863,6 +864,7 @@
"primary_currency": "Valuta Principale",
"timezone": "Fuso Orario",
"date_format": "Formato data",
"time_format": "Time Format",
"currencies": {
"title": "Valute",
"currency": "Valùta | Valute",
@@ -989,6 +991,7 @@
"delimiter_description": "Singolo carattere per specificare il confine tra 2 componenti separati. Per impostazione predefinita è impostato a -",
"delimiter_param_label": "Valore Delimitatore",
"date_format": "Formato data",
"time_format": "Time Format",
"date_format_description": "Un campo di data e ora locale che accetta un parametro di formato. Il formato predefinito: 'Y' rende l'anno corrente.",
"date_format_param_label": "Formato",
"sequence": "Sequenza",
@@ -1233,6 +1236,7 @@
"time_zone": "Fuso Orario",
"fiscal_year": "Anno finanziario",
"date_format": "Formato Data",
"time_format": "Time Fromat",
"discount_setting": "Impostazione Sconto",
"discount_per_item": "Sconto Per Item ",
"discount_setting_description": "Abilita se vuoi aggiungere uno sconto ad uno specifica fattura. Di default, lo sconto è aggiunto direttamente in fattura.",
@@ -1245,6 +1249,7 @@
"select_language": "seleziona lingua",
"select_time_zone": "Seleziona Time Zone",
"select_date_format": "Seleziona Formato Data",
"select_time_format": "Select Time Format",
"select_financial_year": "Seleziona anno finanziario",
"recurring_invoice_status": "Stato Fattura Ricorrente",
"create_status": "Crea stato",
@@ -1253,6 +1258,8 @@
"update_status": "Aggiorna stato",
"completed": "Completato",
"company_currency_unchangeable": "La valuta dell'azienda non può essere cambiata",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Fuso Orario",
"fiscal_year": "Anno Finanziario",
"date_format": "Formato Date",
"time_format": "Time Format",
"from_address": "Indirizzo - Da",
"username": "Nome utente",
"next": "Successivo",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tassa",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

File diff suppressed because it is too large Load Diff

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Klientai",
"prefix": "Priešdėlis",
"tax_id": "Tax ID",
"add_customer": "Pridėti klientą",
"contacts_list": "Klientų sąrašas",
"name": "Vardas",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Pagrindinė valiuta",
"timezone": "Laiko zona",
"date_format": "Datos formatas",
"time_format": "Time Format",
"currencies": {
"title": "Valiutos",
"currency": "Valiuta | Valiutos",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Datos formatas",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Formatas",
"sequence": "Seka",
@@ -1233,6 +1236,7 @@
"time_zone": "Laiko zona",
"fiscal_year": "Finansiniai metai",
"date_format": "Datos formatas",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Pasirinkite Kalbą",
"select_time_zone": "Pasirinkite Laiko Zoną",
"select_date_format": "Pasirinkite Datos Formatą",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Sukurti būseną",
@@ -1253,6 +1258,8 @@
"update_status": "Atnaujinti būseną",
"completed": "Užbaigtas",
"company_currency_unchangeable": "Įmonės valiuta negali būti pakeista",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "Iš adreso",
"username": "Vartotojo vardas",
"next": "Kitas",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Klienti",
"prefix": "Prefikss",
"tax_id": "Tax ID",
"add_customer": "Pievienot klientu",
"contacts_list": "Klientu saraksts",
"name": "Vārds",
@@ -323,9 +324,9 @@
"record_payment": "Izveidot maksājumu",
"add_estimate": "Pievienot aprēķinu",
"save_estimate": "Saglabāt aprēķinu",
"cloned_successfully": "Piedāvājums veiksmīgi klonēts",
"clone_estimate": "Klonēt piedāvājumu",
"confirm_clone": "Šis piedāvājums tiks klonēts jaunā piedāvājumā",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Šis aprēķins tiks izmantots, lai izveidotu jaunu rēķinu.",
"conversion_message": "Rēķins izveidots veiksmīgi",
"confirm_send_estimate": "Šis aprēķins tiks nosūtīts klientam e-pastā",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primārā valūta",
"timezone": "Laika josla",
"date_format": "Datuma formāts",
"time_format": "Time Format",
"currencies": {
"title": "Valūtas",
"currency": "Valūta | Valūtas",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Laika josla",
"fiscal_year": "Finanšu gads",
"date_format": "Datuma formāts",
"time_format": "Time Fromat",
"discount_setting": "Atlaižu iestatījumi",
"discount_per_item": "Atlaide par preci/pakalpojumu ",
"discount_setting_description": "Iespējot šo, lai piešķirtu atlaides individuālām rēķina precēm. Pēc noklusējuma, atlaide tiek piemērota rēķinam.",
@@ -1245,6 +1249,7 @@
"select_language": "Izvēlieties valodu",
"select_time_zone": "Izvēlaties laika joslu",
"select_date_format": "Izvēlaties datuma formātu",
"select_time_format": "Select Time Format",
"select_financial_year": "Izvēlaties finanšu gadu",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Customers",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Add Customer",
"contacts_list": "Customer List",
"name": "Name",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -18,7 +18,7 @@
"add_company": "Bedrijf toevoegen",
"view_pdf": "Bekijk PDF",
"copy_pdf_url": "Kopieer PDF-URL",
"download_pdf": "Download PDF",
"download_pdf": "PDF downloaden",
"save": "Opslaan",
"create": "Maak",
"cancel": "Annuleren",
@@ -101,25 +101,25 @@
"login_successfully": "Succesvol ingelogd!",
"logged_out_successfully": "Succesvol afgemeld",
"mark_as_default": "Markeren als standaard",
"no_data_found": "No data found",
"no_data_found": "Geen gegevens beschikbaar",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Vorige",
"next": "Volgende",
"showing": "Afgebeeld",
"to": "tot",
"of": "van",
"results": "resultaten"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Sleep een bestand hierheen of",
"browse": "bladeren",
"to_choose": "om een bestand te kiezen"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "De lijst is leeg",
"no_results_found": "Geen resultaten gevonden"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Kopieer naar Klembord"
},
"dashboard": {
"select_year": "Selecteer jaar",
@@ -191,6 +191,7 @@
"customers": {
"title": "Klanten",
"prefix": "Voorvoegsel",
"tax_id": "Tax ID",
"add_customer": "Klant toevoegen",
"contacts_list": "Klantenlijst",
"name": "Naam",
@@ -323,9 +324,9 @@
"record_payment": "Betaling registreren",
"add_estimate": "Offerte toevoegen",
"save_estimate": "Bewaar offerte",
"cloned_successfully": "Offerte succesvol gekloond",
"clone_estimate": "Offerte klonen",
"confirm_clone": "Deze offerte zal worden gekopieerd naar een nieuwe offerte",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Deze offerte wordt gebruikt om een nieuwe factuur te maken.",
"conversion_message": "Factuur gemaakt",
"confirm_send_estimate": "Deze offerte wordt via e-mail naar de klant gestuurd",
@@ -564,7 +565,7 @@
"type_item_description": "Type item beschrijving (optioneel)"
},
"frequency": {
"title": "Frequentie",
"title": "Frequency (using cron format)",
"select_frequency": "Frequentie selecteren",
"minute": "Minuut",
"hour": "Uur",
@@ -863,6 +864,7 @@
"primary_currency": "Primaire valuta",
"timezone": "Tijdzone",
"date_format": "Datumnotatie",
"time_format": "Time Format",
"currencies": {
"title": "Valuta's",
"currency": "Valuta | Valuta's",
@@ -989,6 +991,7 @@
"delimiter_description": "Enkel teken voor het opgeven van de grens tussen 2 verschillende componenten. Standaard is het ingesteld op -",
"delimiter_param_label": "Scheidingsteken waarde",
"date_format": "Datumformaat",
"time_format": "Time Format",
"date_format_description": "Een lokaal datum- en tijdveld dat een formaatparameter accepteert. Het standaardformaat: 'Y' geeft het huidige jaar weer.",
"date_format_param_label": "Formaat",
"sequence": "Volgnummer",
@@ -1233,6 +1236,7 @@
"time_zone": "Tijdzone",
"fiscal_year": "Financieel jaar",
"date_format": "Datumnotatie",
"time_format": "Time Fromat",
"discount_setting": "Kortingsinstelling",
"discount_per_item": "Korting per item",
"discount_setting_description": "Schakel dit in als u korting wilt toevoegen aan afzonderlijke factuuritems. Standaard wordt korting rechtstreeks aan de factuur toegevoegd.",
@@ -1245,6 +1249,7 @@
"select_language": "Selecteer taal",
"select_time_zone": "Selecteer Tijdzone",
"select_date_format": "Selecteer datum/tijdindeling",
"select_time_format": "Select Time Format",
"select_financial_year": "Selecteer financieel ja",
"recurring_invoice_status": "Status periodieke factuur",
"create_status": "Status aanmaken",
@@ -1253,6 +1258,8 @@
"update_status": "Updatestatus",
"completed": "Voltooid",
"company_currency_unchangeable": "Bedrijfsvaluta kan niet worden gewijzigd",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Tijdzone",
"fiscal_year": "Financieel jaar",
"date_format": "Datumnotatie",
"time_format": "Time Format",
"from_address": "Van adres",
"username": "Gebruikersnaam",
"next": "De volgende",
@@ -1610,19 +1618,21 @@
"pdf_total_tax_label": "TOTALE BELASTINGEN",
"pdf_tax_types_label": "Belastingtypen",
"pdf_expenses_label": "Uitgaven",
"pdf_bill_to": "Rekening naar,",
"pdf_bill_to": "Aan,",
"pdf_ship_to": "Verzend naar,",
"pdf_received_from": "Ontvangen van:",
"pdf_tax_label": "Btw",
"pdf_tax_id": "FIN",
"pdf_vat_id": "BTW",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Bedankt",
"mail_view_estimate": "Bekijk offerte",
"mail_viewed_estimate": ":name heeft deze offerte bekeken.",
"mail_view_invoice": "Bekijk factuur",
"mail_viewed_invoice": ":name heeft deze factuur bekeken.",
"mail_view_payment": "Bekijk betaling",
"notification_view_estimate": "[Notification] Offerte bekeken",
"notification_view_invoice": "[Notification] Factuur bekeken",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "Je hebt een factuur ontvangen van <b>{COMPANY_NAME}</b>.</br> Download via de onderstaande knop:"
}

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Klienci",
"prefix": "Przedrostek",
"tax_id": "Tax ID",
"add_customer": "Dodaj klienta",
"contacts_list": "Lista klientów",
"name": "Nazwa",
@@ -323,9 +324,9 @@
"record_payment": "Zarejestruj płatność",
"add_estimate": "Dodaj ofertę",
"save_estimate": "Zapisz ofertę",
"cloned_successfully": "Oferta została pomyślnie sklonowana",
"clone_estimate": "Sklonuj ofertę",
"confirm_clone": "Ta oferta zostanie sklonowana do nowej oferty",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Ta oferta zostanie użyta do utworzenia nowej faktury.",
"conversion_message": "Faktura została utworzona pomyślnie",
"confirm_send_estimate": "Ta oferta zostanie wysłana pocztą elektroniczną do kontrahenta",
@@ -564,7 +565,7 @@
"type_item_description": "Opis pozycji (opcjonalnie)"
},
"frequency": {
"title": "Częstotliwość",
"title": "Frequency (using cron format)",
"select_frequency": "Wybierz częstotliwość",
"minute": "Minuta",
"hour": "Godzina",
@@ -863,6 +864,7 @@
"primary_currency": "Waluta główna",
"timezone": "Strefa czasowa",
"date_format": "Format daty",
"time_format": "Time Format",
"currencies": {
"title": "Waluty",
"currency": "Waluta | Waluty",
@@ -989,6 +991,7 @@
"delimiter_description": "Pojedynczy znak do określenia granicy pomiędzy 2 oddzielnymi składnikami. Domyślnie ustawiony na -",
"delimiter_param_label": "Wartość separatora",
"date_format": "Format daty",
"time_format": "Time Format",
"date_format_description": "Pole daty i czasu lokalnego, które akceptuje parametr formatu. Domyślny format: 'Y' renderuje bieżący rok.",
"date_format_param_label": "Format",
"sequence": "Sekwencja",
@@ -1233,6 +1236,7 @@
"time_zone": "Strefa czasowa",
"fiscal_year": "Rok finansowy",
"date_format": "Format daty",
"time_format": "Time Fromat",
"discount_setting": "Ustawienia rabatu",
"discount_per_item": "Rabat na produkt ",
"discount_setting_description": "Włącz to, jeśli chcesz dodać rabat do poszczególnych elementów faktury. Domyślnie rabat jest dodawany bezpośrednio do całej faktury.",
@@ -1245,6 +1249,7 @@
"select_language": "Wybierz język",
"select_time_zone": "Ustaw strefę czasową",
"select_date_format": "Wybierz format daty",
"select_time_format": "Select Time Format",
"select_financial_year": "Wybierz rok podatkowy",
"recurring_invoice_status": "Status Faktury Cyklicznej",
"create_status": "Utwórz status",
@@ -1253,6 +1258,8 @@
"update_status": "Aktualizuj status",
"completed": "Ukończone",
"company_currency_unchangeable": "Nie można zmienić waluty firmy",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Strefa czasowa",
"fiscal_year": "Rok finansowy",
"date_format": "Format daty",
"time_format": "Time Format",
"from_address": "Adres nadawcy",
"username": "Nazwa użytkownika",
"next": "Następny",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Podatek",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -128,7 +128,7 @@
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
"payments": "Pagamento | Pagamentos"
},
"chart_info": {
"total_sales": "Vendas",
@@ -191,6 +191,7 @@
"customers": {
"title": "Clientes",
"prefix": "Prefixo",
"tax_id": "Tax ID",
"add_customer": "Adicionar cliente",
"contacts_list": "Lista de clientes",
"name": "Nome",
@@ -230,7 +231,7 @@
"portal_access": "Clientes → Acessar portal",
"portal_access_text": "Clientes→ Texto do portal de acesso?",
"portal_access_url": "Portal de serviço ao consumidor URL",
"portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.",
"portal_access_url_help": "Copie e encaminhe o link para seu cliente para fornecer acesso.",
"billing_address": "Endereço de cobrança",
"shipping_address": "Endereço de entrega",
"copy_billing_address": "Copiar Endereço de Faturamento",
@@ -250,7 +251,7 @@
"confirm_delete": "Você não poderá recuperar este cliente e todas as faturas, orçamentos e pagamentos relacionados. | Você não poderá recuperar esses clientes e todas as faturas, estimativas e pagamentos relacionados.",
"created_message": "Cliente criado com sucesso",
"updated_message": "Cliente atualizado com sucesso",
"address_updated_message": "Address Information Updated succesfully",
"address_updated_message": "Informação de endereço atualizada com sucesso",
"deleted_message": "Cliente excluído com sucesso | Clientes excluídos com sucesso",
"edit_currency_not_allowed": "Não é possível alterar a moeda depois de criar transações."
},
@@ -284,8 +285,8 @@
},
"estimates": {
"title": "Orçamentos",
"accept_estimate": "Accept Estimate",
"reject_estimate": "Reject Estimate",
"accept_estimate": "Aceitar estimativa",
"reject_estimate": "Rejeitar estimativa",
"estimate": "Orçamento | Orçamentos",
"estimates_list": "Lista de orçamentos",
"days": "{days} Dias",
@@ -309,7 +310,7 @@
"date": "Data",
"due_date": "Data de Vencimento",
"expiry_date": "Data de expiração",
"status": "Status",
"status": "Estado",
"add_tax": "Adicionar Imposto",
"amount": "Valor",
"action": "Ação",
@@ -340,10 +341,10 @@
},
"accepted": "Aceito",
"rejected": "Rejeitado",
"expired": "Expired",
"expired": "Expirado",
"sent": "Enviado",
"draft": "Rascunho",
"viewed": "Viewed",
"viewed": "Visto",
"declined": "Rejeitado",
"new_estimate": "Novo orçamento",
"add_new_estimate": "Adicionar novo orçamento",
@@ -377,14 +378,14 @@
"select_an_item": "Escreva ou clique para selecionar um item",
"type_item_description": "Descrição do Item (opcional)"
},
"mark_as_default_estimate_template_description": "If enabled, the selected template will be automatically selected for new estimates."
"mark_as_default_estimate_template_description": "Se ativado, o modelo selecionado será usado para novas estimativas."
},
"invoices": {
"title": "Faturas",
"download": "Download",
"pay_invoice": "Pay Invoice",
"download": "Baixar",
"pay_invoice": "Pagar fatura",
"invoices_list": "Lista de faturas",
"invoice_information": "Invoice Information",
"invoice_information": "Informações da fatura",
"days": "{days} dias",
"months": "{months} Mês",
"years": "{years} Ano",
@@ -396,7 +397,7 @@
"completed": "Concluído",
"customer": "CLIENTE",
"paid_status": "STATUS PAGAMENTO",
"ref_no": "REF NO.",
"ref_no": "NÚM. REFERÊNCIA",
"number": "NÚMERO",
"amount_due": "VALOR DEVIDO",
"partially_paid": "Parcialmente Pago",
@@ -410,7 +411,7 @@
"add_item": "Adicionar um Item",
"date": "Data",
"due_date": "Data de Vencimento",
"status": "Status",
"status": "Estado",
"add_tax": "Adicionar imposto",
"amount": "Valor",
"action": "Ação",
@@ -469,7 +470,7 @@
"marked_as_sent_message": "Fatura marcada como enviada com sucesso",
"something_went_wrong": "algo deu errado",
"invalid_due_amount_message": "O valor total da fatura não pode ser menor que o valor total pago para esta fatura. Atualize a fatura ou exclua os pagamentos associados para continuar.",
"mark_as_default_invoice_template_description": "If enabled, the selected template will be automatically selected for new invoices."
"mark_as_default_invoice_template_description": "Se ativado, o modelo selecionado será usado para novas faturas."
},
"recurring_invoices": {
"title": "Faturas Recorrentes",
@@ -486,56 +487,56 @@
"completed": "Concluído",
"customer": "CLIENTE",
"paid_status": "STATUS PAGAMENTO",
"ref_no": "REF NO.",
"number": "NUMBER",
"amount_due": "AMOUNT DUE",
"partially_paid": "Partially Paid",
"ref_no": "NÚM. REFERÊNCIA",
"number": "NÚMERO",
"amount_due": "VALOR DEVIDO",
"partially_paid": "Parcialmente pago",
"total": "Total",
"discount": "Discount",
"sub_total": "Sub Total",
"invoice": "Recurring Invoice | Recurring Invoices",
"invoice_number": "Recurring Invoice Number",
"next_invoice_date": "Next Invoice Date",
"ref_number": "Ref Number",
"contact": "Contact",
"add_item": "Add an Item",
"date": "Date",
"limit_by": "Limit by",
"limit_date": "Limit Date",
"limit_count": "Limit Count",
"count": "Count",
"status": "Status",
"select_a_status": "Select a status",
"working": "Working",
"on_hold": "On Hold",
"complete": "Completed",
"add_tax": "Add Tax",
"amount": "Amount",
"action": "Action",
"notes": "Notes",
"view": "View",
"basic_info": "Basic Info",
"send_invoice": "Send Recurring Invoice",
"auto_send": "Auto Send",
"resend_invoice": "Resend Recurring Invoice",
"invoice_template": "Recurring Invoice Template",
"conversion_message": "Recurring Invoice cloned successful",
"template": "Template",
"mark_as_sent": "Mark as sent",
"confirm_send_invoice": "This recurring invoice will be sent via email to the customer",
"invoice_mark_as_sent": "This recurring invoice will be marked as sent",
"confirm_send": "This recurring invoice will be sent via email to the customer",
"starts_at": "Start Date",
"due_date": "Invoice Due Date",
"record_payment": "Record Payment",
"add_new_invoice": "Add New Recurring Invoice",
"update_expense": "Update Expense",
"edit_invoice": "Edit Recurring Invoice",
"new_invoice": "New Recurring Invoice",
"send_automatically": "Send Automatically",
"send_automatically_desc": "Enable this, if you would like to send the invoice automatically to the customer when its created.",
"save_invoice": "Save Recurring Invoice",
"update_invoice": "Update Recurring Invoice",
"discount": "Desconto",
"sub_total": "Subtotal",
"invoice": "Fatura recorrente | Faturas recorrentes",
"invoice_number": "Número de fatura recorrente",
"next_invoice_date": "Data da próxima fatura",
"ref_number": "Núm. Referência",
"contact": "Contato",
"add_item": "Adicionar um item",
"date": "Data",
"limit_by": "Até",
"limit_date": "Data limite",
"limit_count": "Contagem limite",
"count": "Contagem",
"status": "Estado",
"select_a_status": "Selecione um estado",
"working": "Funcionando",
"on_hold": "Pendente",
"complete": "Concluído",
"add_tax": "Adicionar taxa",
"amount": "Quantidade",
"action": "Ação",
"notes": "Observações",
"view": "Ver",
"basic_info": "Informações básicas",
"send_invoice": "Enviar fatura recorrente",
"auto_send": "Enviar automaticamente",
"resend_invoice": "Reenviar fatura recorrente",
"invoice_template": "Modelo de fatura recorrente",
"conversion_message": "Fatura clonada com sucesso",
"template": "Modelo",
"mark_as_sent": "Marcar como vista",
"confirm_send_invoice": "Essa fatura será enviada ao cliente por e-mail",
"invoice_mark_as_sent": "Essa fatura será marcada como vista",
"confirm_send": "Essa fatura será enviada ao cliente por e-mail",
"starts_at": "Data de início",
"due_date": "Vencimento da fatura",
"record_payment": "Registro de pagamento",
"add_new_invoice": "Adicionar nova fatura",
"update_expense": "Atualizar despesa",
"edit_invoice": "Editar fatura",
"new_invoice": "Nova fatura",
"send_automatically": "Enviar automaticamente",
"send_automatically_desc": "Ative se quiser que a fatura seja enviada automaticamente para o cliente.",
"save_invoice": "Salvar fatura",
"update_invoice": "Atualizar fatura",
"add_new_tax": "Adicionar Novo Imposto",
"no_invoices": "Não há faturas recorrentes ainda!",
"mark_as_rejected": "Marcar como rejeitada",
@@ -544,7 +545,7 @@
"select_invoice": "Selecionar Fatura",
"no_matching_invoices": "Não há faturas recorrentes correspondentes!",
"mark_as_sent_successfully": "Fatura recorrente marcada como enviada com sucesso",
"invoice_sent_successfully": "Recurring Invoice sent successfully",
"invoice_sent_successfully": "Fatura enviada com sucesso",
"cloned_successfully": "Recurring Invoice cloned successfully",
"clone_invoice": "Clone Recurring Invoice",
"confirm_clone": "This recurring invoice will be cloned into a new Recurring Invoice",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -642,7 +643,7 @@
"select_a_customer": "Selecione um cliente",
"expense_title": "Título",
"customer": "Cliente",
"currency": "Currency",
"currency": "Moeda",
"contact": "Contato",
"category": "Categoria",
"from_date": "A partir da Data",
@@ -700,7 +701,7 @@
"buy_now": "Buy Now",
"install": "Install",
"price": "Price",
"download_zip_file": "Download ZIP file",
"download_zip_file": "Baixar arquivo ZIP",
"unzipping_package": "Unzipping Package",
"copying_files": "Copying Files",
"deleting_files": "Deleting Unused files",
@@ -714,7 +715,7 @@
"yearly": "Yearly",
"updated": "Updated",
"version": "Version",
"disable": "Disable",
"disable": "Desativar",
"module_disabled": "Module Disabled",
"enable": "Enable",
"module_enabled": "Module Enabled",
@@ -863,6 +864,7 @@
"primary_currency": "Moeda Principal",
"timezone": "Fuso horário",
"date_format": "Formato de data",
"time_format": "Time Format",
"currencies": {
"title": "Moedas",
"currency": "Moeda | Moedas",
@@ -981,7 +983,7 @@
"learn_custom_format": "Learn how to use custom format",
"add_new_component": "Add New Component",
"component": "Component",
"Parameter": "Parameter",
"Parameter": "Parâmetro",
"series": "Series",
"series_description": "To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",
"series_param_label": "Series Value",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1049,7 +1052,7 @@
"estimate_settings_updated": "Estimate Settings updated successfully",
"convert_estimate_options": "Estimate Convert Action",
"convert_estimate_description": "Specify what happens to the estimate after it gets converted to an invoice.",
"no_action": "No action",
"no_action": "Nenhuma ação",
"delete_estimate": "Delete estimate",
"mark_estimate_as_accepted": "Mark estimate as accepted"
},
@@ -1172,7 +1175,7 @@
"exchange_help_text": "Enter exchange rate to convert from {currency} to {baseCurrency}",
"currency_freak": "Currency Freak",
"currency_layer": "Currency Layer",
"open_exchange_rate": "Open Exchange Rate",
"open_exchange_rate": "Abrir Taxa de Câmbio",
"currency_converter": "Currency Converter",
"server": "Server",
"url": "URL",
@@ -1233,6 +1236,7 @@
"time_zone": "Fuso Horário",
"fiscal_year": "Ano Financeiro",
"date_format": "Formato da Data",
"time_format": "Time Fromat",
"discount_setting": "Configuração de Desconto",
"discount_per_item": "Desconto por Item ",
"discount_setting_description": "Habilite isso se desejar adicionar desconto a itens de Fatura individualmente. Por padrão, o desconto é adicionado diretamente à Fatura.",
@@ -1245,6 +1249,7 @@
"select_language": "Selecione um Idioma",
"select_time_zone": "Selecione um fuso horário",
"select_date_format": "Selecionar um Formato de Data",
"select_time_format": "Select Time Format",
"select_financial_year": "Selecione o ano financeiro",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1407,7 +1414,7 @@
"logo_preview": "Pré-visualizar Logotipo",
"preferences": "Preferências",
"preferences_desc": "Preferências padrão para o sistema.",
"currency_set_alert": "The company's currency cannot be changed later.",
"currency_set_alert": "A moeda da empresa não poderá ser alterada posteriormente.",
"country": "País",
"state": "Estado",
"city": "Cidade",
@@ -1421,6 +1428,7 @@
"time_zone": "Fuso Horário",
"fiscal_year": "Ano Financeiro",
"date_format": "Formato de Data",
"time_format": "Time Format",
"from_address": "Do Endereço",
"username": "Nome de Usuário",
"next": "Próximo",
@@ -1452,11 +1460,11 @@
},
"verify_domain": {
"title": "Verificação de Domínio",
"desc": "O InvoiceShelfa usa a autenticação baseada na sessão que requer verificação de domínio para fins de segurança. Por favor, insira o domínio no qual você vai acessar seu aplicativo web.",
"desc": "O InvoiceShelf usa a autenticação baseada na sessão que requer verificação de domínio para fins de segurança. Por favor, insira o domínio que você vai acessar seu aplicativo.",
"app_domain": "Domínio do Aplicativo",
"verify_now": "Verificar Agora",
"success": "Domínio Verificado com Sucesso.",
"failed": "Domain verification failed. Please enter valid domain name.",
"failed": "Falha na verificação de domínio. Digite um nome de domínio válido.",
"verify_and_continue": "Verificar e Continuar",
"notes": {
"notes": "Notes:",
@@ -1516,7 +1524,7 @@
"not_yet": "Ainda não? Envie novamente",
"password_min_length": "A senha deve ter {count} caracteres",
"name_min_length": "O nome deve ter pelo menos {count} letras.",
"prefix_min_length": "Prefix must have at least {count} letters.",
"prefix_min_length": "Prefixo deve ter pelo menos letras {count}.",
"enter_valid_tax_rate": "Insira uma taxa de imposto válida",
"numbers_only": "Apenas Números.",
"characters_only": "Apenas Caracteres.",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Clienţi",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Adauga client",
"contacts_list": "Lista clienti",
"name": "Nume",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -4,7 +4,7 @@
"customers": "Клиенты",
"items": "Товары",
"invoices": "Счет-фактуры",
"recurring-invoices": "Recurring Invoices",
"recurring-invoices": "Повторяющиеся счета",
"expenses": "Расходы",
"estimates": "Заказы",
"payments": "Платежи",
@@ -94,41 +94,41 @@
"insert_note": "Вставить заметку",
"copied_pdf_url_clipboard": "Ссылка на PDF скопирована в буфер обмена!",
"copied_url_clipboard": "Ссылка скопирована!",
"docs": "Docs",
"docs": "Документация",
"do_you_wish_to_continue": "Хотите продолжить?",
"note": "Note",
"note": "Заметка",
"pay_invoice": "Оплатить счет",
"login_successfully": "Вход выполнен!",
"logged_out_successfully": "Вы успешно вышли",
"mark_as_default": "Установить по умолчанию",
"no_data_found": "No data found",
"no_data_found": "Нет данных",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Назад",
"next": "Далее",
"showing": "Показано",
"to": "до",
"of": "с",
"results": "итоги"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Перетащите файл сюда или",
"browse": "обзор",
"to_choose": "для выбора файла"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "Список пуст",
"no_results_found": "Ничего не найдено"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Скопировать в буфер обмена"
},
"dashboard": {
"select_year": "Выберите год",
"cards": {
"due_amount": "Сумма",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
"customers": "Клиент | Клиенты",
"invoices": "Счёт | Счета",
"estimates": "Пр. Расчёт | Пр. Расчёты",
"payments": "Платеж | Платежи"
},
"chart_info": {
"total_sales": "Продажи",
@@ -191,6 +191,7 @@
"customers": {
"title": "Клиенты",
"prefix": "Префикс",
"tax_id": "ИНН",
"add_customer": "Добавить клиента",
"contacts_list": "Список клиентов",
"name": "Имя",
@@ -206,7 +207,7 @@
"website": "Сайт",
"overview": "Обзор",
"invoice_prefix": "Префикс счета",
"estimate_prefix": "Estimate Prefix",
"estimate_prefix": "Префикс оценки",
"payment_prefix": "Префикс платежа",
"enable_portal": "Разрешить портал",
"country": "Страна",
@@ -323,9 +324,9 @@
"record_payment": "Добавить платёж",
"add_estimate": "Добавить заказ",
"save_estimate": "Сохранить заказ",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"cloned_successfully": "Примерный расчёт успешно клонирован",
"clone_estimate": "Клонировать Расчёт",
"confirm_clone": "Этот расчёт будет клонирован в новый расчёт",
"confirm_conversion": "Эта смета будет использоваться для создания нового счета-фактуры.",
"conversion_message": "Счет-фактура успешно создан",
"confirm_send_estimate": "Эта смета будет отправлена клиенту по электронной почте",
@@ -472,8 +473,8 @@
"mark_as_default_invoice_template_description": "Если включено, выбранный шаблон будет автоматически выбираться для новых счетов."
},
"recurring_invoices": {
"title": "Recurring Invoices",
"invoices_list": "Recurring Invoices List",
"title": "Повторяющиеся счета",
"invoices_list": "Список повторяющихся счетов",
"days": "{days} Дней",
"months": "{months} Месяц",
"years": "{years} Год",
@@ -564,9 +565,9 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"select_frequency": "Select Frequency",
"minute": "Minute",
"title": "Frequency (using cron format)",
"select_frequency": "Выберите периодичность",
"minute": "Минута",
"hour": "Hour",
"day_month": "Day of month",
"month": "Месяц",
@@ -863,6 +864,7 @@
"primary_currency": "Основная валюта",
"timezone": "Часовой пояс",
"date_format": "Формат даты",
"time_format": "Time Format",
"currencies": {
"title": "Валюты",
"currency": "Валюта | Валюты",
@@ -989,6 +991,7 @@
"delimiter_description": "Символ для обозначения границы между двумя компонентами. По умолчанию имеет значение -",
"delimiter_param_label": "Разделитель",
"date_format": "Формат даты",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Формат",
"sequence": "Последовательность",
@@ -1233,6 +1236,7 @@
"time_zone": "Часовой пояс",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Выберите часовой пояс",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Часовой пояс",
"fiscal_year": "Финансовый год",
"date_format": "Формат даты",
"time_format": "Time Format",
"from_address": "Адрес",
"username": "Имя пользователя",
"next": "Далее",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Zákazníci",
"prefix": "Predpona",
"tax_id": "Tax ID",
"add_customer": "Pridať Zákazníka",
"contacts_list": "Zoznam zákazníkov",
"name": "Meno",
@@ -323,9 +324,9 @@
"record_payment": "Zaznamenať Platbu",
"add_estimate": "Vytvoriť Cenový odhad",
"save_estimate": "Uložiť Cenový odhad",
"cloned_successfully": "Ponuka úspešne skopírovaná",
"clone_estimate": "Klonovať ponuku",
"confirm_clone": "Táto ponuka bude skopírovaná do novej ponuky",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Tento cenový odhad bude použitý k vytvoreniu novej Faktúry.",
"conversion_message": "Faktúra úspešne vytvorená",
"confirm_send_estimate": "Tento Cenový odhad bude odoslaný zákazníkovi prostredníctvom e-mailu",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -727,20 +728,20 @@
"other_modules": "Other Modules",
"view_all": "View All",
"no_reviews_found": "There are no reviews for this module yet!",
"module_not_purchased": "Module Not Purchased",
"module_not_found": "Module Not Found",
"module_not_purchased": "Modul nie je kúpený",
"module_not_found": "Modul sa nenašiel",
"version_not_supported": "This module version doesn't support the current version of InvoiceShelf",
"last_updated": "Last Updated On",
"connect_installation": "Connect your installation",
"api_token_description": "Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",
"view_module": "View Module",
"update_available": "Update Available",
"purchased": "Purchased",
"installed": "Installed",
"no_modules_installed": "No Modules Installed Yet!",
"disable_warning": "All the settings for this particular will be reverted.",
"what_you_get": "What you get",
"sign_up_and_get_token": "Sign up & Get Token"
"last_updated": "Naposledy upravené",
"connect_installation": "Pripojte vašu inštaláciu",
"api_token_description": "Prihláste se k {url} a pripojte túto inštaláciu zadaním API tokenu. Vaše zakúpené moduly sa zobrazia tu po naviazaní pripojenia.",
"view_module": "Zobraziť modul",
"update_available": "Dostupná aktualizácia",
"purchased": "Zakúpené",
"installed": "Nainštalované",
"no_modules_installed": "Nie sú nainštalované žiadne moduly!",
"disable_warning": "Všetky nastavenia pre túto konkrétnu položku budú vrátené späť.",
"what_you_get": "Čo dostanete",
"sign_up_and_get_token": "Prihláste sa a získajte token"
},
"users": {
"title": "Uživatelia",
@@ -767,8 +768,8 @@
"created_message": "Užívateľ úspešne vytvorený",
"updated_message": "Užívateľ úspešne aktualizovaná",
"deleted_message": "Užívateľ úspešne odstránený | Užívatelia úspešne odstránení",
"select_company_role": "Select Role for {company}",
"companies": "Companies"
"select_company_role": "Vyberte rolu pre {company}",
"companies": "Spoločnosti"
},
"reports": {
"title": "Reporty",
@@ -794,8 +795,8 @@
"from_date": "Od dátumu",
"report_type": "Typ Reportu",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Podľa zákazníka",
"by_item": "Podľa položky"
}
},
"taxes": {
@@ -850,11 +851,11 @@
"custom_fields": "Vlastné Polia",
"payment_modes": "Spôsoby Platby",
"notes": "Poznámky",
"exchange_rate": "Exchange Rate",
"address_information": "Address Information"
"exchange_rate": "Výmenný kurz",
"address_information": "Informácie o adrese"
},
"address_information": {
"section_description": " You can update Your Address information using form below."
"section_description": "Adresu môžete aktualizovať pomocou formulára nižšie."
},
"title": "Nastavenia",
"setting": "Nastavenia | Nastavenia",
@@ -863,6 +864,7 @@
"primary_currency": "Hlavná Mena",
"timezone": "Časové Pásmo",
"date_format": "Formát Dátumu",
"time_format": "Time Format",
"currencies": {
"title": "Meny",
"currency": "Mena | Meny",
@@ -870,7 +872,7 @@
"select_currency": "Vyberte Menu",
"name": "Meno",
"code": "Kód",
"symbol": "Symbol",
"symbol": "Znak meny",
"precision": "Presnosť",
"thousand_separator": "Oddelovač Tisíciek",
"decimal_separator": "Oddelovač Desatinných Miest",
@@ -918,9 +920,9 @@
"address": "Adresa",
"zip": "PSČ",
"save": "Uložiť",
"delete": "Delete",
"delete": "Odstrániť",
"updated_message": "Informácie o firme úspešne aktualizované",
"delete_company": "Delete Company",
"delete_company": "Odstrániť spoločnosť",
"delete_company_description": "Once you delete your company, you will lose all the data and files associated with it permanently.",
"are_you_absolutely_sure": "Are you absolutely sure?",
"delete_company_modal_desc": "This action cannot be undone. This will permanently delete {company} and all of its associated data.",
@@ -937,7 +939,7 @@
"name": "Názov",
"slug": "Slug",
"required": "Povinné",
"placeholder": "Umiestnenie",
"placeholder": "Zástupný text",
"help_text": "Pomocný Text",
"default_value": "Predvolená hodnota",
"prefix": "Predpona",
@@ -947,7 +949,7 @@
"suffix": "Prípona",
"yes": "Áno",
"no": "Nie",
"order": "Objednať",
"order": "Poradie",
"custom_field_confirm_delete": "Nebudete môcť obnovit toto vlastné pole",
"already_in_use": "Toto vlastne pole sa už používa",
"deleted_message": "Vlastné pole úspešne vymazané",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Časové Pásmo",
"fiscal_year": "Fiškálny Rok",
"date_format": "Formát Dátumu",
"time_format": "Time Fromat",
"discount_setting": "Nastavenia Zľavy",
"discount_per_item": "Zľava pre každú Položku zvlášť ",
"discount_setting_description": "Túto možnosť povoľte, ak chcete pridať zľavu k jednotlivým položkám faktúry. Štandardne sa zľava pripočítava priamo k faktúre.",
@@ -1245,6 +1249,7 @@
"select_language": "Vyberte Jazyk",
"select_time_zone": "Vyberte Časové Pásmo",
"select_date_format": "Vybrať Formát Dátumu",
"select_time_format": "Select Time Format",
"select_financial_year": "Vyberte Fiškálny Rok",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Časové pásmo",
"fiscal_year": "Fiškálny rok",
"date_format": "Formát dátumu",
"time_format": "Time Format",
"from_address": "Z adresy",
"username": "Prihlasovacie meno",
"next": "Ďaľší",
@@ -1610,12 +1618,14 @@
"pdf_total_tax_label": "Celkové dane",
"pdf_tax_types_label": "Typy daní",
"pdf_expenses_label": "Výdaje",
"pdf_bill_to": "Fakturovať,",
"pdf_bill_to": "Odberateľ:",
"pdf_ship_to": "Doručiť,",
"pdf_received_from": "Prijaté od:",
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Stranke",
"prefix": "Predznak",
"tax_id": "Tax ID",
"add_customer": "Dodajte uporabnika",
"contacts_list": "Seznam uporabnikov",
"name": "Ime",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Klijenti",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Dodaj Klijenta",
"contacts_list": "Lista klijenata",
"name": "Naziv",
@@ -323,9 +324,9 @@
"record_payment": "Unesi uplatu",
"add_estimate": "Dodaj Profakturu",
"save_estimate": "Sačuvaj Profakturu",
"cloned_successfully": "Ponuda uspešno klonirana",
"clone_estimate": "Kloniraj ponudu",
"confirm_clone": "Ova ponuda će biti klonirana u novu ponudu",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Detalji ove Profakture će biti iskorišćeni za pravljenje Fakture.",
"conversion_message": "Faktura uspešno kreirana",
"confirm_send_estimate": "Ova Profaktura će biti poslata putem Email-a klijentu",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primarna Valuta",
"timezone": "Vremenska Zona",
"date_format": "Format Datuma",
"time_format": "Time Format",
"currencies": {
"title": "Valute",
"currency": "Valuta | Valute",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Vremenska Zona",
"fiscal_year": "Finansijska Godina",
"date_format": "Format datuma",
"time_format": "Time Fromat",
"discount_setting": "Podešavanja za popuste",
"discount_per_item": "Popust po stavci",
"discount_setting_description": "Izaberite ovo ako želite da dodajete Popust na individualne stavke. Podrazumevano ponašanje je da je Popust dodat direktno na fakturu.",
@@ -1245,6 +1249,7 @@
"select_language": "Izaberi Jezik",
"select_time_zone": "Izaberi Vremensku Zonu",
"select_date_format": "Izaberi Format Datuma",
"select_time_format": "Select Time Format",
"select_financial_year": "Izaberi Finansijsku Godinu",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Vremenska zona",
"fiscal_year": "Finansijska godina",
"date_format": "Format datuma",
"time_format": "Time Format",
"from_address": "Adresa pošiljaoca",
"username": "Korisničko ime",
"next": "Sledeće",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -15,9 +15,9 @@
"modules": "Moduler"
},
"general": {
"add_company": "Skapa företag",
"add_company": "Lägg till företag",
"view_pdf": "Visa PDF",
"copy_pdf_url": "Kopiera adress till PDF",
"copy_pdf_url": "Kopiera PDF-URL",
"download_pdf": "Ladda ner PDF",
"save": "Spara",
"create": "Skapa",
@@ -32,7 +32,7 @@
"ok": "Ok",
"yes": "Ja",
"no": "Nej",
"sort_by": "Sortera ",
"sort_by": "Sortera efter",
"ascending": "Stigande",
"descending": "Fallande",
"subject": "Ämne",
@@ -44,14 +44,14 @@
"back_to_login": "Till inloggningssidan?",
"home": "Hem",
"filter": "Filter",
"delete": "Ta bort",
"edit": "Editera",
"delete": "Radera",
"edit": "Redigera",
"view": "Visa",
"add_new_item": "Skapa artikel",
"clear_all": "Rensa alla",
"showing": "Visar",
"of": "av",
"actions": "Funktioner",
"actions": "Åtgärder",
"subtotal": "DELSUMMA",
"discount": "RABATT",
"fixed": "Fast",
@@ -61,13 +61,13 @@
"bill_to": "Faktureras till",
"ship_to": "Levereras till",
"due": "Förfallen",
"draft": "Förslag",
"draft": "Utkast",
"sent": "Skickat",
"all": "Alla",
"select_all": "Välj alla",
"select_template": "Välj mall",
"choose_file": "Klicka här för att välja fil",
"choose_template": "Välj mall",
"choose_template": "Välj en mall",
"choose": "Välj",
"remove": "Ta bort",
"select_a_status": "Välj status",
@@ -96,19 +96,19 @@
"copied_url_clipboard": "Kopierade URL till urklipp!",
"docs": "Dokumentation",
"do_you_wish_to_continue": "Vill du fortsätta?",
"note": "Notering",
"note": "Anteckning",
"pay_invoice": "Betala faktura",
"login_successfully": "Inloggningen lyckades!",
"logged_out_successfully": "Utloggningen lyckades",
"mark_as_default": "Markera som standard",
"no_data_found": "No data found",
"no_data_found": "Ingen data hittades",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Föregående",
"next": "Nästa",
"showing": "Visar",
"to": "till",
"of": "av",
"results": "resultat"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
@@ -117,18 +117,18 @@
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"no_results_found": "Inga resultat hittades"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Kopiera till urklipp"
},
"dashboard": {
"select_year": "Välj år",
"cards": {
"due_amount": "Förfallet belopp",
"customers": "Kunder",
"invoices": "Fakturor",
"customers": "Kund | Kunder",
"invoices": "Faktura | Fakturor",
"estimates": "Kostnadsförslag",
"payments": "Payments"
"payments": "Betalning | Betalningar"
},
"chart_info": {
"total_sales": "Försäljning",
@@ -145,7 +145,7 @@
"due_on": "Förfaller den",
"customer": "Kund",
"amount_due": "Förfallet belopp",
"actions": "Handlingar",
"actions": "Åtgärder",
"view_all": "Visa alla"
},
"recent_estimate_card": {
@@ -153,21 +153,21 @@
"date": "Datum",
"customer": "Kund",
"amount_due": "Förfallet belopp",
"actions": "Handlingar",
"actions": "Åtgärder",
"view_all": "Visa alla"
}
},
"tax_types": {
"name": "Namn",
"description": "Beskrivning",
"percent": "Provent",
"percent": "Procent",
"compound_tax": "Sammansatt moms"
},
"global_search": {
"search": "Sök...",
"customers": "Kunder",
"users": "Användare",
"no_results_found": "Hittade inga resultat"
"no_results_found": "Inga resultat hittades"
},
"company_switcher": {
"label": "Byt företag",
@@ -191,6 +191,7 @@
"customers": {
"title": "Kunder",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "Lägg till kund",
"contacts_list": "Kundlista",
"name": "Namn",
@@ -200,10 +201,10 @@
"primary_contact_name": "Primär kontakts namn",
"contact_name": "Kontaktnamn",
"amount_due": "Förfallet belopp",
"email": "Epost",
"email": "E-postadress",
"address": "Adress",
"phone": "Telefon",
"website": "Hemsida",
"website": "Webbplats",
"overview": "Översikt",
"invoice_prefix": "Prefix för fakturor",
"estimate_prefix": "Prefix för offert",
@@ -214,10 +215,10 @@
"city": "Stad",
"zip_code": "Postnummer",
"added_on": "Tillagd den",
"action": "Handling",
"action": "Åtgärd",
"password": "Lösenord",
"confirm_password": "Bekräfta lösenord",
"street_number": "Gatnummer",
"street_number": "Gatunummer",
"primary_currency": "Huvudvaluta",
"description": "Beskrivning",
"add_new_customer": "Lägg till ny kund",
@@ -225,17 +226,17 @@
"update_customer": "Uppdatera kund",
"customer": "Kund | Kunder",
"new_customer": "Ny kund",
"edit_customer": "Ändra kund",
"edit_customer": "Redigera kund",
"basic_info": "Information",
"portal_access": "Åtkomst till portalen",
"portal_access_text": "Vill du tillåta denna kund att logga in på kundportalen?",
"portal_access_url": "URL för kundportalens inloggning",
"portal_access_url_help": "Vänligen kopiera och vidarebefordra ovanstående angivna URL till din kund för att ge åtkomst.",
"billing_address": "Fakturaadress",
"billing_address": "Faktureringsadress",
"shipping_address": "Leveransadress",
"copy_billing_address": "Kopiera från faktura",
"no_customers": "Inga kunder än!",
"no_customers_found": "Hittade inga kunder!",
"no_customers_found": "Inga kunder hittades!",
"no_contact": "Inga kontakter",
"no_contact_name": "Kontaktnamn",
"list_of_customers": "Här kommer det finnas en lista med kunder.",
@@ -264,14 +265,14 @@
"price": "Pris",
"date_of_creation": "Skapandedatum",
"not_selected": "Inga poster valda",
"action": "Handling",
"action": "Åtgärd",
"add_item": "Skapa artikel",
"save_item": "Spara artikel",
"update_item": "Uppdatera artiklar",
"item": "Artikel | Artiklar",
"add_new_item": "Skapa ny artikel",
"new_item": "Ny artikel",
"edit_item": "Ändra artikel",
"edit_item": "Redigera objekt",
"no_items": "Inga artiklar än!",
"list_of_items": "Här kommer lista över artiklar vara.",
"select_a_unit": "välj enhet",
@@ -312,8 +313,8 @@
"status": "Status",
"add_tax": "Lägg till moms",
"amount": "Belopp",
"action": "Handling",
"notes": "Noteringar",
"action": "Åtgärd",
"notes": "Anteckningar",
"tax": "Moms",
"estimate_template": "Mall",
"convert_to_invoice": "Konvertera till faktura",
@@ -323,9 +324,9 @@
"record_payment": "Registrera betalning",
"add_estimate": "Lägg till offert",
"save_estimate": "Spara offert",
"cloned_successfully": "Offert klonades framgångsrikt",
"clone_estimate": "Klona offert",
"confirm_clone": "Denna offert kommer att klonas till en ny offert",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "Denna offert används för att skapa ny faktura.",
"conversion_message": "Faktura skapades",
"confirm_send_estimate": "Denna offert skickas via epost till kund",
@@ -383,7 +384,7 @@
"title": "Fakturor",
"download": "Ladda ner",
"pay_invoice": "Betala faktura",
"invoices_list": "Fakturor",
"invoices_list": "Fakturalista",
"invoice_information": "Fakturainformation",
"days": "{days} dagar",
"months": "{months} månader",
@@ -413,14 +414,14 @@
"status": "Status",
"add_tax": "Lägg till moms",
"amount": "Summa",
"action": "Handling",
"notes": "Noteringar",
"action": "Åtgärd",
"notes": "Anteckningar",
"view": "Visa",
"send_invoice": "Skicka faktura",
"resend_invoice": "Skicka faktura igen",
"invoice_template": "Fakturamall",
"conversion_message": "Fakturan kopierades",
"template": "Mall",
"template": "Välj mall",
"mark_as_sent": "Markera som skickad",
"confirm_send_invoice": "Denna faktura skickas via epost till kunden",
"invoice_mark_as_sent": "Denna faktura markeras som skickad",
@@ -430,8 +431,8 @@
"invoice_date": "Fakturadatum",
"record_payment": "Registrera betalning",
"add_new_invoice": "Lägg till ny faktura",
"update_expense": "Ändra utgifter",
"edit_invoice": "Editera faktura",
"update_expense": "Uppdatera utgift",
"edit_invoice": "Redigera faktura",
"new_invoice": "Ny faktura",
"save_invoice": "Spara faktura",
"update_invoice": "Uppdatera faktura",
@@ -449,7 +450,7 @@
"confirm_clone": "Denna faktura kopieras till en ny faktura",
"item": {
"title": "Artikelnamn",
"description": "Beskvirning",
"description": "Beskrivning",
"quantity": "Antal",
"price": "Pris",
"discount": "Rabatt",
@@ -474,9 +475,9 @@
"recurring_invoices": {
"title": "Återkommande fakturor",
"invoices_list": "Återkommande fakturor",
"days": "{days} Dagar",
"months": "{months} Månader",
"years": "{years} År",
"days": "{days} dagar",
"months": "{months} månader",
"years": "{years} år",
"all": "Alla",
"paid": "Betalda",
"unpaid": "Obetalda",
@@ -564,19 +565,19 @@
"type_item_description": "Skriv in artikelns beskrivning (frivilligt)"
},
"frequency": {
"title": "Upprepning",
"title": "Frequency (using cron format)",
"select_frequency": "Välj antal",
"minute": "Minut",
"hour": "Timmar",
"day_month": "Dag i månaden",
"month": "Månad",
"day_week": "Dag i veckan",
"every_minute": "Every Minute",
"every_minute": "Varje minut",
"every_30_minute": "Every 30 Minute",
"every_hour": "Every Hour",
"every_hour": "Varje timme",
"every_2_hour": "Every 2 Hour",
"every_day_at_midnight": "Every day at midnight",
"every_week": "Every Week",
"every_week": "Varje vecka",
"every_15_days_at_midnight": "Every 15 days at midnight",
"on_the_first_day_of_every_month_at_midnight": "On the first day of every month at 00:00",
"every_6_month": "Every 6 Month",
@@ -592,8 +593,8 @@
"something_went_wrong": "något gick fel",
"invalid_due_amount_message": "Totalsumman för den återkommande fakturan kan inte vara lägre än den betalda summan. Vänligen uppdatera fakturan eller radera de kopplade betalningarna.",
"limit": {
"none": "None",
"date": "Date",
"none": "Ingen",
"date": "Datum",
"count": "Count"
}
},
@@ -604,16 +605,16 @@
"customer": "Kund",
"date": "Datum",
"amount": "Summa",
"action": "Handling",
"action": "Åtgärd",
"payment_number": "Betalningsnummer",
"payment_mode": "Betalningssätt",
"invoice": "Faktura",
"note": "Notering",
"add_payment": "Skapa betalning",
"note": "Anteckning",
"add_payment": "Lägg till betalning",
"new_payment": "Ny betalning",
"edit_payment": "Ändra betalning",
"edit_payment": "Redigera betalning",
"view_payment": "Visa betalning",
"add_new_payment": "Skapa ny betalning",
"add_new_payment": "Lägg till ny betalning",
"send_payment_receipt": "Skicka kvitto på betalning",
"send_payment": "Skicka betalning",
"save_payment": "Spara betalning",
@@ -651,9 +652,9 @@
"description": "Beskrivning",
"receipt": "Kvitto",
"amount": "Summa",
"action": "Handling",
"action": "Åtgärd",
"not_selected": "Ej markerad",
"note": "Notering",
"note": "Anteckning",
"category_id": "Kategorins ID",
"date": "Datum",
"add_expense": "Lägg till utgift",
@@ -661,7 +662,7 @@
"save_expense": "Spara utgift",
"update_expense": "Uppdatera utgift",
"download_receipt": "Ladda ner kvitto",
"edit_expense": "Ändra utgift",
"edit_expense": "Redigera utgift",
"new_expense": "Ny utgift",
"expense": "Utgift | Utgifter",
"no_expenses": "Inga utgifter än!",
@@ -676,7 +677,7 @@
"name": "Namn",
"description": "Beskrivning",
"amount": "Summa",
"actions": "Handlingar",
"actions": "Åtgärder",
"add_category": "Lägg till kategori",
"new_category": "Ny kategori",
"category": "Kategori | Kategorier",
@@ -684,7 +685,7 @@
}
},
"login": {
"email": "Epost",
"email": "E-postadress",
"password": "Lösenord",
"forgot_password": "Glömt lösenord?",
"or_signIn_with": "eller logga in med",
@@ -692,9 +693,9 @@
"register": "Registrera",
"reset_password": "Återställ lösenord",
"password_reset_successfully": "Lösenord återställt",
"enter_email": "Skriv in epost",
"enter_password": "Skriv in lösenord",
"retype_password": "Skriv lösenordet igen"
"enter_email": "Ange e-postadress",
"enter_password": "Ange lösenord",
"retype_password": "Ange lösenord igen"
},
"modules": {
"buy_now": "Köp nu",
@@ -756,10 +757,10 @@
"user": "Användare | Användare",
"add_new_user": "Lägg till ny användare",
"new_user": "Ny användare",
"edit_user": "Ändra användare",
"edit_user": "Redigera användare",
"no_users": "Inga användare än!",
"list_of_users": "Här kommer man se alla användare.",
"email": "Epost",
"email": "E-postadress",
"phone": "Telefon",
"password": "Lösenord",
"user_attached_message": "Kan inte ta bort ett objeckt som används",
@@ -794,8 +795,8 @@
"from_date": "Från datum",
"report_type": "Rapporttyp",
"sort": {
"by_customer": "By Customer",
"by_item": "By Item"
"by_customer": "Efter kund",
"by_item": "Efter objekt"
}
},
"taxes": {
@@ -849,7 +850,7 @@
"file_disk": "Lagring",
"custom_fields": "Anpassade fält",
"payment_modes": "Betalmetoder",
"notes": "Noteringar",
"notes": "Anteckningar",
"exchange_rate": "Växelkurser",
"address_information": "Adressinformation"
},
@@ -863,6 +864,7 @@
"primary_currency": "Primär valuta",
"timezone": "Tidszon",
"date_format": "Datumformat",
"time_format": "Time Format",
"currencies": {
"title": "Valutor",
"currency": "Valuta | Valutor",
@@ -916,7 +918,7 @@
"state": "Kommun",
"city": "Stad",
"address": "Adress",
"zip": "Postnr",
"zip": "Postnummer",
"save": "Spara",
"delete": "Radera",
"updated_message": "Företagsinformation uppdaterad",
@@ -924,7 +926,7 @@
"delete_company_description": "När du tar bort ditt företag, kommer du att förlora all data och filer som är associerade med det permanent.",
"are_you_absolutely_sure": "Är du helt säker?",
"delete_company_modal_desc": "Denna åtgärd kan inte ångras. Detta kommer att permanent ta bort {company} och all tillhörande data.",
"delete_company_modal_label": "Vänligen skriv {company} för att bekräfta"
"delete_company_modal_label": "Ange {company} för att bekräfta"
},
"custom_fields": {
"title": "Anpassade fält",
@@ -966,11 +968,11 @@
"model_in_use": "Kan inte uppdatera modell för fält som redan används.",
"type_in_use": "Kan inte uppdatera typ för fält som redan används.",
"model_type": {
"customer": "Customer",
"invoice": "Invoice",
"customer": "Kund",
"invoice": "Faktura",
"estimate": "Estimate",
"expense": "Expense",
"payment": "Payment"
"payment": "Betalning"
}
},
"customization": {
@@ -989,6 +991,7 @@
"delimiter_description": "Tecken för att ange gränsen mellan 2 separata komponenter. Som standard är den inställd till -",
"delimiter_param_label": "Avgränsarens värde",
"date_format": "Datumformat",
"time_format": "Time Format",
"date_format_description": "Ett lokalt datum- och tidsfält som accepterar en formatsparameter. Standardformatet: 'Y' renderar innevarande år.",
"date_format_param_label": "Format",
"sequence": "Sekvens",
@@ -1080,14 +1083,14 @@
"deleted_message": "Artikelenhet raderades"
},
"notes": {
"title": "Noteringar",
"title": "Anteckningar",
"description": "Spara tid genom att skapa noteringar som kan återanvändas på fakturor, betalningsförslag, och betalningar.",
"notes": "Noteringar",
"notes": "Anteckningar",
"type": "Typ",
"add_note": "Lägg till notering",
"add_new_note": "Lägg till ny notering",
"add_note": "Lägg till anteckning",
"add_new_note": "Lägg till ny anteckning",
"name": "Namn",
"edit_note": "Editera notering",
"edit_note": "Redigera anteckning",
"note_added": "Notering skapades",
"note_updated": "Notering uppdaterades",
"note_confirm_delete": "Du kommer inte kunna återställa denna notering",
@@ -1095,15 +1098,15 @@
"deleted_message": "Notering raderades",
"types": {
"estimate": "Estimate",
"invoice": "Invoice",
"payment": "Payment"
"invoice": "Faktura",
"payment": "Betalning"
}
}
},
"account_settings": {
"profile_picture": "Profilbild",
"name": "Namn",
"email": "Epost",
"email": "E-postadress",
"password": "Lösenord",
"confirm_password": "Bekräfta lösenord",
"account_settings": "Kontoinställningar",
@@ -1113,7 +1116,7 @@
},
"user_profile": {
"name": "Namn",
"email": "Epost",
"email": "E-postadress",
"password": "Lösenord",
"confirm_password": "Bekräfta lösenord"
},
@@ -1127,10 +1130,10 @@
"estimate_viewed_desc": "När din kund kollar betalförslag via invoiceshelfs översikt.",
"save": "Spara",
"email_save_message": "Epost sparades",
"please_enter_email": "Skriv in epostadress"
"please_enter_email": "Ange e-postadress"
},
"roles": {
"title": "Roler",
"title": "Roller",
"description": "Hantera roller och behörigheter för det här företaget",
"save": "Spara",
"add_new_role": "Lägg till ny roll",
@@ -1218,7 +1221,7 @@
"description": "Kategorier krävs för att lägga till utgifter. Du kan lägga till och ta bort dessa kategorier som du vill",
"add_new_category": "Lägg till ny kategori",
"add_category": "Lägg till kategori",
"edit_category": "Ändra kategori",
"edit_category": "Redigera kategori",
"category_name": "Kategorinamn",
"category_description": "Beskrivning",
"created_message": "Utgiftskategori skapades",
@@ -1233,6 +1236,7 @@
"time_zone": "Tidszon",
"fiscal_year": "Räkenskapsår",
"date_format": "Datumformattering",
"time_format": "Time Fromat",
"discount_setting": "Rabattinställningar",
"discount_per_item": "Rabatt per artikel ",
"discount_setting_description": "Aktivera detta om du vill kunna lägga rabatt på enskilda fakturaartiklar. Rabatt ges som standard på hela fakturan.",
@@ -1245,26 +1249,29 @@
"select_language": "Välj språk",
"select_time_zone": "Välj tidszon",
"select_date_format": "Välj datumformat",
"select_time_format": "Select Time Format",
"select_financial_year": "Välj räkenskapsår",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
"create_status": "Skapa status",
"active": "Aktiv",
"on_hold": "Pausad",
"update_status": "Uppdatera status",
"completed": "Slutförd",
"company_currency_unchangeable": "Företagets valuta kan inte ändras",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
"march_february": "March - February",
"april_march": "April - March",
"may_april": "May - April",
"june_may": "June - May",
"july_june": "July - June",
"august_july": "August - July",
"september_august": "September - August",
"october_september": "October - September",
"november_october": "November - October",
"january_december": "Januari - December",
"february_january": "Februari - Januari",
"march_february": "Mars - Februari",
"april_march": "April - Mars",
"may_april": "Maj - April",
"june_may": "Juni - Maj",
"july_june": "Juli - Juni",
"august_july": "Augusti - Juli",
"september_august": "September - Augusti",
"october_september": "Oktober - September",
"november_october": "November - Oktober",
"december_november": "December - November"
}
},
@@ -1303,7 +1310,7 @@
"new_disk": "Ny disk",
"created_at": "skapad den",
"size": "storlek",
"dropbox": "dropbox",
"dropbox": "Dropbox",
"local": "lokal",
"healthy": "hälsosam",
"amount_of_backups": "antal säkerhetskopior",
@@ -1319,7 +1326,7 @@
"title": "Lagring | Lagringar",
"description": "InvoiceShelf använder din lokala disk som standard för att spara säkerhetskopior, avatarer och andra bildfiler. Du kan ställa in fler lagringsenheter såsom DigitalOcean, S3 och Dropbox beroende av ditt behov.",
"created_at": "skapad den",
"dropbox": "dropbox",
"dropbox": "Dropbox",
"name": "Namn",
"driver": "Plats",
"disk_type": "Typ",
@@ -1396,7 +1403,7 @@
"account_info": "Kontoinformation",
"account_info_desc": "Nedan detaljer används för att skapa huvudadministratörskonto. Du kan ändra detta i efterhand.",
"name": "Namn",
"email": "Epost",
"email": "E-postadress",
"password": "Lösenord",
"confirm_password": "Bekräfta lösenord",
"save_cont": "Spara och fortsätt",
@@ -1414,13 +1421,14 @@
"address": "Adress",
"street": "Gatuadress1 | Gatuadress2",
"phone": "Telefon",
"zip_code": "Postnr",
"zip_code": "Postnummer",
"go_back": "Tillbaka",
"currency": "Valuta",
"language": "Språk",
"time_zone": "Tidszon",
"fiscal_year": "Räkenskapsår",
"date_format": "Datumformat",
"time_format": "Time Format",
"from_address": "Från adress",
"username": "Användarnamn",
"next": "Nästa",
@@ -1461,7 +1469,7 @@
"notes": {
"notes": "Notes:",
"not_contain": "App domain should not contain",
"or": "or",
"or": "eller",
"in_front": "in front of the domain.",
"if_you": "If you're accessing the website on a different port, please mention the port. For example:"
}
@@ -1503,11 +1511,11 @@
}
},
"validation": {
"invalid_phone": "Felaktigt telefonnummer",
"invalid_phone": "Ogiltigt telefonnummer",
"invalid_url": "Felaktig url (ex: http://www.invoiceshelf.com)",
"invalid_domain_url": "Felaktig url (ex: invoiceshelf.com)",
"required": "Fältet är tvingande",
"email_incorrect": "Felaktig epostadress.",
"email_incorrect": "Felaktig e-postadress.",
"email_already_taken": "Denna epostadress finns redan.",
"email_does_not_exist": "Användare med den epostadressen finns inte",
"item_unit_already_taken": "Detta artikelenhetsnamn finns redan",
@@ -1581,7 +1589,7 @@
"pdf_invoice_number": "Fakturanummer",
"pdf_invoice_date": "Fakturadatum",
"pdf_invoice_due_date": "Inbetalningsdatum",
"pdf_notes": "Noteringar",
"pdf_notes": "Anteckningar",
"pdf_items_label": "Artiklar",
"pdf_quantity_label": "Antal",
"pdf_price_label": "Kostnad",
@@ -1616,12 +1624,14 @@
"pdf_tax_label": "Moms",
"pdf_tax_id": "Org.Nr",
"pdf_vat_id": "Momsreg. nr",
"mail_thanks": "Thanks",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Tack",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",
"mail_view_invoice": "View Invoice",
"mail_view_invoice": "Visa faktura",
"mail_viewed_invoice": ":name viewed this Invoice.",
"mail_view_payment": "View Payment",
"mail_view_payment": "Visa betalning",
"notification_view_estimate": "[Notification] Estimate viewed",
"notification_view_invoice": "[Notification] Invoice viewed",
"You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:": "You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:"

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "ลูกค้า",
"prefix": "Prefix",
"tax_id": "Tax ID",
"add_customer": "เพิ่มลูกค้า",
"contacts_list": "รายชื่อลูกค้า",
"name": "ชื่อ",
@@ -323,9 +324,9 @@
"record_payment": "บันทึกการชำระเงิน",
"add_estimate": "เพิ่มค่าใบเสนอราคา",
"save_estimate": "บันทึกใบเสนอราคา",
"cloned_successfully": "โคลนข้อเสนอสำเร็จ",
"clone_estimate": "โคลนข้อเสนอ",
"confirm_clone": "ข้อเสนอนี้จะถูกโคลนเป็นข้อเสนอใหม่",
"cloned_successfully": "Estimate cloned successfully",
"clone_estimate": "Clone Estimate",
"confirm_clone": "This Estimate will be cloned into a new Estimate",
"confirm_conversion": "ใบเสนอราคานี้จะใช้ในการสร้างใบวางบิลใหม่",
"conversion_message": "ใบวางบิลที่สร้างเสร็จสมบูรณ์",
"confirm_send_estimate": "ใบเสนอราคานี้จะถูกส่งผ่านทางอีเมลถึงลูกค้า",
@@ -564,7 +565,7 @@
"type_item_description": "คำอธิบาย (ไม่จำเป็น)"
},
"frequency": {
"title": "ระยะเวลา",
"title": "Frequency (using cron format)",
"select_frequency": "กำหนดระยะเวลารอบบิล",
"minute": "นาที",
"hour": "ชั่วโมง",
@@ -863,6 +864,7 @@
"primary_currency": "สกุลเงินหลัก",
"timezone": "เขตเวลา",
"date_format": "รูปแบบวันที่",
"time_format": "Time Format",
"currencies": {
"title": "สกุลเงิน",
"currency": "สกุลเงิน | สกุลเงิน",
@@ -989,6 +991,7 @@
"delimiter_description": "ตัวอักษรตัวเดียวสำหรับการระบุเขตแดนระหว่าง 2 องค์ประกอบที่แยกต่างหากโดยค่าเริ่มต้นตั้งค่าเป็น -",
"delimiter_param_label": "ตัวคั่น",
"date_format": "รูปแบบวันที่",
"time_format": "Time Format",
"date_format_description": "วันที่และเวลาท้องถิ่นฟิลด์ซึ่งยอมรับพารามิเตอร์รูปแบบรูปแบบเริ่มต้น: 'Y' วาทกรรมในปีปัจจุบัน",
"date_format_param_label": "รูปแบบ",
"sequence": "ลำดับ",
@@ -1233,6 +1236,7 @@
"time_zone": "เขตเวลา",
"fiscal_year": "ปีงบการเงิน",
"date_format": "รูปแบบวันที่",
"time_format": "Time Fromat",
"discount_setting": "การตั้งค่าส่วนลด",
"discount_per_item": "ส่วนลดต่อรายการ ",
"discount_setting_description": "เปิดใช้งานตัวเลือกนี้หากคุณต้องการเพิ่มส่วนลดให้กับรายการใบวางบิลแต่ละรายการโดยค่าเริ่มต้นส่วนลดจะถูกเพิ่มโดยตรงไปยังใบวางบิล",
@@ -1245,6 +1249,7 @@
"select_language": "เลือกภาษา",
"select_time_zone": "เลือกโซนเวลา",
"select_date_format": "เลือกรูปแบบวันที่",
"select_time_format": "Select Time Format",
"select_financial_year": "เลือกปีการเงิน",
"recurring_invoice_status": "สถานะใบวางบิลประจำ",
"create_status": "สร้างสถานะ",
@@ -1253,6 +1258,8 @@
"update_status": "สถานะการอัพเดต",
"completed": "เสร็จสมบูรณ์",
"company_currency_unchangeable": "สกุลเงินของบริษัทไม่สามารถเปลี่ยนแปลงได้",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "เขตเวลา",
"fiscal_year": "ปีงบการเงิน",
"date_format": "รูปแบบวันที่",
"time_format": "Time Format",
"from_address": "จากที่อยู่",
"username": "ชื่อผู้ใช้",
"next": "ถัดไป",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "ภาษี",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

File diff suppressed because it is too large Load Diff

View File

@@ -1,187 +1,187 @@
{
"navigation": {
"dashboard": "Dashboard",
"customers": "Customers",
"items": "Items",
"invoices": "Invoices",
"recurring-invoices": "Recurring Invoices",
"expenses": "Expenses",
"estimates": "Estimates",
"payments": "Payments",
"reports": "Reports",
"settings": "Settings",
"logout": "Logout",
"users": "Users",
"modules": "Modules"
"dashboard": "Панель керування",
"customers": "Клієнти",
"items": "Товари",
"invoices": "Платежі",
"recurring-invoices": "Регулярні платежі",
"expenses": "Витрати",
"estimates": "Оцінки",
"payments": "Оплати",
"reports": "Звіти",
"settings": "Налаштування",
"logout": "Вийти",
"users": "Користувачі",
"modules": "Модулі"
},
"general": {
"add_company": "Add Company",
"view_pdf": "View PDF",
"copy_pdf_url": "Copy PDF Url",
"download_pdf": "Download PDF",
"save": "Save",
"create": "Create",
"cancel": "Cancel",
"update": "Update",
"deselect": "Deselect",
"download": "Download",
"from_date": "From Date",
"to_date": "To Date",
"from": "From",
"to": "To",
"ok": "Ok",
"yes": "Yes",
"no": "No",
"sort_by": "Sort By",
"ascending": "Ascending",
"descending": "Descending",
"subject": "Subject",
"body": "Body",
"message": "Message",
"send": "Send",
"preview": "Preview",
"go_back": "Go Back",
"back_to_login": "Back to Login?",
"home": "Home",
"filter": "Filter",
"delete": "Delete",
"edit": "Edit",
"view": "View",
"add_new_item": "Add New Item",
"clear_all": "Clear All",
"showing": "Showing",
"add_company": "Додати компанію",
"view_pdf": "Переглянути PDF",
"copy_pdf_url": "Копіювати посилання PDF",
"download_pdf": "Завантажити PDF",
"save": "Зберегти",
"create": "Створити",
"cancel": "Скасувати",
"update": "Оновити",
"deselect": "Зняти вибір",
"download": "Завантажити",
"from_date": "Від дати",
"to_date": "До дати",
"from": "З",
"to": "До",
"ok": "Ок",
"yes": "Так",
"no": "Ні",
"sort_by": "Впорядкувати за",
"ascending": "За зростанням",
"descending": "За спаданням",
"subject": "Тема",
"body": "Вміст",
"message": "Повідомлення",
"send": "Надіслати",
"preview": "Перегляд",
"go_back": "Повернутися назад",
"back_to_login": "Повернутись до входу?",
"home": "Домашня сторінка",
"filter": "Фільтр",
"delete": "Видалити",
"edit": "Редагувати",
"view": "Вигляд",
"add_new_item": "Додати новий елемент",
"clear_all": "Очистити все",
"showing": "Показано",
"of": "of",
"actions": "Actions",
"actions": "Дії",
"subtotal": "SUBTOTAL",
"discount": "DISCOUNT",
"fixed": "Fixed",
"percentage": "Percentage",
"tax": "TAX",
"total_amount": "TOTAL AMOUNT",
"discount": "ЗНИЖКА",
"fixed": "Фіксована",
"percentage": "Відсоток",
"tax": "ПОДАТОК",
"total_amount": "ЗАГАЛЬНА СУМА",
"bill_to": "Bill to",
"ship_to": "Ship to",
"due": "Due",
"draft": "Draft",
"sent": "Sent",
"all": "All",
"select_all": "Select All",
"select_template": "Select Template",
"choose_file": "Click here to choose a file",
"choose_template": "Choose a template",
"choose": "Choose",
"remove": "Remove",
"select_a_status": "Select a status",
"select_a_tax": "Select a tax",
"search": "Search",
"are_you_sure": "Are you sure?",
"list_is_empty": "List is empty.",
"no_tax_found": "No tax found!",
"draft": "Чернетка",
"sent": "Надіслано",
"all": "Усі",
"select_all": "Обрати все",
"select_template": "Вибрати шаблон",
"choose_file": "Натисніть тут щоб обрати файл",
"choose_template": "Оберіть шаблон",
"choose": "Обрати",
"remove": "Вилучити",
"select_a_status": "Оберіть статус",
"select_a_tax": "Оберіть податок",
"search": "Пошук",
"are_you_sure": "Ви впевнені?",
"list_is_empty": "Список порожній.",
"no_tax_found": "Податок не знайдено!",
"four_zero_four": "404",
"you_got_lost": "Whoops! You got Lost!",
"go_home": "Go Home",
"test_mail_conf": "Test Mail Configuration",
"send_mail_successfully": "Mail sent successfully",
"setting_updated": "Setting updated successfully",
"select_state": "Select state",
"select_country": "Select Country",
"select_city": "Select City",
"street_1": "Street 1",
"street_2": "Street 2",
"action_failed": "Action Failed",
"retry": "Retry",
"you_got_lost": "Ой! Ви заблукали!",
"go_home": "Повернутися",
"test_mail_conf": "Перевірити Налаштування Пошти",
"send_mail_successfully": "Лист успішно надіслано",
"setting_updated": "Налаштування успішно оновлено",
"select_state": "Оберіть область",
"select_country": "Оберіть країну",
"select_city": "Оберіть місто",
"street_1": "Вулиця 1",
"street_2": "Вулиця 2",
"action_failed": "Не вдалося виконати дію",
"retry": "Повторити",
"choose_note": "Choose Note",
"no_note_found": "No Note Found",
"no_note_found": "Примітку не знайдено",
"insert_note": "Insert Note",
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!",
"copied_url_clipboard": "Copied url to clipboard!",
"copied_pdf_url_clipboard": "Посилання на PDF скопійовано в буфер обміну!",
"copied_url_clipboard": "Посилання скопійовано до буфера обміну!",
"docs": "Docs",
"do_you_wish_to_continue": "Do you wish to continue?",
"note": "Note",
"pay_invoice": "Pay Invoice",
"login_successfully": "Logged in successfully!",
"logged_out_successfully": "Logged out successfully",
"mark_as_default": "Mark as default",
"no_data_found": "No data found",
"do_you_wish_to_continue": "Бажаєте продовжити?",
"note": "Примітка",
"pay_invoice": "Сплатити Рахунок",
"login_successfully": "Вхід успішно виконано!",
"logged_out_successfully": "Вихід успішний",
"mark_as_default": "Позначити за замовчуванням",
"no_data_found": "Даних не знайдено",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "Попередній",
"next": "Наступний",
"showing": "Показано",
"to": "до",
"of": "з",
"results": "результати"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "Перетягніть файл сюди або",
"browse": "перегляд",
"to_choose": "обрати файл"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "Список порожній",
"no_results_found": "Результатів не знайдено"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "Копіювати до буферу обміну"
},
"dashboard": {
"select_year": "Select year",
"select_year": "Виберіть рік",
"cards": {
"due_amount": "Amount Due",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"due_amount": "Сума до сплати",
"customers": "Клієнт | Клієнти",
"invoices": "Рахунок | Рахунки",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
"payments": "Оплата | Оплати"
},
"chart_info": {
"total_sales": "Sales",
"total_receipts": "Receipts",
"total_expense": "Expenses",
"net_income": "Net Income",
"year": "Select year"
"total_sales": "Продажі",
"total_receipts": "Квитанції",
"total_expense": "Витрати",
"net_income": "Чистий дохід",
"year": "Виберіть рік"
},
"monthly_chart": {
"title": "Sales & Expenses"
"title": "Продажі & Витрати"
},
"recent_invoices_card": {
"title": "Due Invoices",
"due_on": "Due On",
"customer": "Customer",
"customer": "Клієнт",
"amount_due": "Amount Due",
"actions": "Actions",
"view_all": "View All"
"actions": "Дії",
"view_all": "Переглянути все"
},
"recent_estimate_card": {
"title": "Recent Estimates",
"date": "Date",
"customer": "Customer",
"date": "Дата",
"customer": "Клієнт",
"amount_due": "Amount Due",
"actions": "Actions",
"view_all": "View All"
"actions": "Дії",
"view_all": "Переглянути все"
}
},
"tax_types": {
"name": "Name",
"description": "Description",
"percent": "Percent",
"name": "Назва",
"description": "Опис",
"percent": "Відсоток",
"compound_tax": "Compound Tax"
},
"global_search": {
"search": "Search...",
"customers": "Customers",
"users": "Users",
"no_results_found": "No Results Found"
"search": "Шукати...",
"customers": "Клієнти",
"users": "Користувачі",
"no_results_found": "Результатів не знайдено"
},
"company_switcher": {
"label": "SWITCH COMPANY",
"no_results_found": "No Results Found",
"add_new_company": "Add new company",
"new_company": "New company",
"created_message": "Company created successfully"
"no_results_found": "Результатів не знайдено",
"add_new_company": "Додати нову компанію",
"new_company": "Нова компанія",
"created_message": "Компанія успішно створена"
},
"dateRange": {
"today": "Today",
"this_week": "This Week",
"this_month": "This Month",
"this_quarter": "This Quarter",
"this_year": "This Year",
"today": "Сьогодні",
"this_week": "Цього тижня",
"this_month": "Цього місяця",
"this_quarter": "Цього кварталу",
"this_year": "Цього року",
"previous_week": "Previous Week",
"previous_month": "Previous Month",
"previous_quarter": "Previous Quarter",
@@ -189,50 +189,51 @@
"custom": "Custom"
},
"customers": {
"title": "Customers",
"prefix": "Prefix",
"add_customer": "Add Customer",
"contacts_list": "Customer List",
"name": "Name",
"title": "Клієнти",
"prefix": "Префікс",
"tax_id": "Tax ID",
"add_customer": "Додати Клієнта",
"contacts_list": "Список клієнтів",
"name": "Ім’я",
"mail": "Mail | Mails",
"statement": "Statement",
"display_name": "Display Name",
"primary_contact_name": "Primary Contact Name",
"contact_name": "Contact Name",
"amount_due": "Amount Due",
"email": "Email",
"address": "Address",
"phone": "Phone",
"website": "Website",
"overview": "Overview",
"email": "Ел. пошта",
"address": "Адреса",
"phone": "Номер телефону",
"website": "Веб-сайт",
"overview": "Перегляд",
"invoice_prefix": "Invoice Prefix",
"estimate_prefix": "Estimate Prefix",
"payment_prefix": "Payment Prefix",
"enable_portal": "Enable Portal",
"country": "Country",
"state": "State",
"city": "City",
"zip_code": "Zip Code",
"added_on": "Added On",
"action": "Action",
"password": "Password",
"confirm_password": "Confirm Password",
"street_number": "Street Number",
"primary_currency": "Primary Currency",
"description": "Description",
"add_new_customer": "Add New Customer",
"save_customer": "Save Customer",
"update_customer": "Update Customer",
"customer": "Customer | Customers",
"new_customer": "New Customer",
"edit_customer": "Edit Customer",
"basic_info": "Basic Info",
"country": "Країна",
"state": "Область",
"city": "Місто",
"zip_code": "Поштовий Індекс",
"added_on": "Додано",
"action": "Дія",
"password": "Пароль",
"confirm_password": "Підтвердьте пароль",
"street_number": "Номер вулиці",
"primary_currency": "Основна валюта",
"description": "Опис",
"add_new_customer": "Додати нового клієнта",
"save_customer": "Зберегти клієнта",
"update_customer": "Оновити Клієнта",
"customer": "Клієнт | Клієнти",
"new_customer": "Новий клієнт",
"edit_customer": "Редагувати Клієнта",
"basic_info": "Основна інформація",
"portal_access": "Portal Access",
"portal_access_text": "Would you like to allow this customer to login to the Customer Portal?",
"portal_access_url": "Customer Portal Login URL",
"portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.",
"billing_address": "Billing Address",
"shipping_address": "Shipping Address",
"billing_address": "Адреса виставлення рахунків",
"shipping_address": "Адреса доставки",
"copy_billing_address": "Copy from Billing",
"no_customers": "No customers yet!",
"no_customers_found": "No customers found!",
@@ -248,8 +249,8 @@
"phone_number": "Phone Number",
"create_date": "Create Date",
"confirm_delete": "You will not be able to recover this customer and all the related Invoices, Estimates and Payments. | You will not be able to recover these customers and all the related Invoices, Estimates and Payments.",
"created_message": "Customer created successfully",
"updated_message": "Customer updated successfully",
"created_message": "Клієнт успішно створений",
"updated_message": "Клієнт успішно оновлений",
"address_updated_message": "Address Information Updated succesfully",
"deleted_message": "Customer deleted successfully | Customers deleted successfully",
"edit_currency_not_allowed": "Cannot change currency once transactions created."
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "Primary Currency",
"timezone": "Time Zone",
"date_format": "Date Format",
"time_format": "Time Format",
"currencies": {
"title": "Currencies",
"currency": "Currency | Currencies",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Fromat",
"discount_setting": "Discount Setting",
"discount_per_item": "Discount Per Item ",
"discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",
@@ -1245,6 +1249,7 @@
"select_language": "Select Language",
"select_time_zone": "Select Time Zone",
"select_date_format": "Select Date Format",
"select_time_format": "Select Time Format",
"select_financial_year": "Select Financial Year",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Time Zone",
"fiscal_year": "Financial Year",
"date_format": "Date Format",
"time_format": "Time Format",
"from_address": "From Address",
"username": "Username",
"next": "Next",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -191,6 +191,7 @@
"customers": {
"title": "Khách hàng",
"prefix": "Tiền tố",
"tax_id": "Tax ID",
"add_customer": "Thêm khách hàng",
"contacts_list": "Danh sách khách hàng",
"name": "Tên",
@@ -564,7 +565,7 @@
"type_item_description": "Nhập mô tả mặt hàng (tuỳ chọn)"
},
"frequency": {
"title": "Tần suất",
"title": "Frequency (using cron format)",
"select_frequency": "Chọn tần suất",
"minute": "Phút",
"hour": "Giờ",
@@ -863,6 +864,7 @@
"primary_currency": "Tiền tệ chính",
"timezone": "Múi giờ",
"date_format": "Định dạng ngày tháng",
"time_format": "Time Format",
"currencies": {
"title": "Tiền tệ",
"currency": "Tiền tệ | Tiền tệ",
@@ -989,6 +991,7 @@
"delimiter_description": "Ký tự để xác định ranh giới giữa hai thành phần riêng biệt. Mặc định được đặt là -",
"delimiter_param_label": "Giá trị ký tự phân cách",
"date_format": "Định dạng ngày",
"time_format": "Time Format",
"date_format_description": "Một trường ngày và giờ cục bộ chấp nhận tham số định dạng. Định dạng mặc định: 'Y' hiển thị năm hiện tại.",
"date_format_param_label": "Định dạng",
"sequence": "Chuỗi",
@@ -1233,6 +1236,7 @@
"time_zone": "Múi giờ",
"fiscal_year": "Năm tài chính",
"date_format": "Định dạng ngày tháng",
"time_format": "Time Fromat",
"discount_setting": "Cài đặt chiết khấu",
"discount_per_item": "Giảm giá cho mỗi mặt hàng ",
"discount_setting_description": "Bật tính năng này nếu bạn muốn thêm Giảm giá vào các mặt hàng hóa đơn riêng lẻ. Theo mặc định, Giảm giá được thêm trực tiếp vào hóa đơn.",
@@ -1245,6 +1249,7 @@
"select_language": "Chọn ngôn ngữ",
"select_time_zone": "Chọn múi giờ",
"select_date_format": "Chọn định dạng ngày",
"select_time_format": "Select Time Format",
"select_financial_year": "Chọn năm tài chính",
"recurring_invoice_status": "Trạng thái hoá đơn định kỳ",
"create_status": "Tạo trạng thái",
@@ -1253,6 +1258,8 @@
"update_status": "Cập nhật trạng thái",
"completed": "Đã hoàn thành",
"company_currency_unchangeable": "Không thể thay đổi đơn vị tiền tệ của doanh nghiệp",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "Múi giờ",
"fiscal_year": "Năm tài chính",
"date_format": "Định dạng ngày tháng",
"time_format": "Time Format",
"from_address": "Từ địa chỉ",
"username": "Tên tài khoản",
"next": "Kế tiếp",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Thuế",
"pdf_tax_id": "ID Thuế",
"pdf_vat_id": "ID VAT",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -12,7 +12,7 @@
"settings": "設定",
"logout": "登出",
"users": "使用者",
"modules": "Modules"
"modules": "模組"
},
"general": {
"add_company": "新增公司",
@@ -93,42 +93,42 @@
"no_note_found": "沒有找到備註",
"insert_note": "插入備註",
"copied_pdf_url_clipboard": "複製PDF位址到剪貼簿!",
"copied_url_clipboard": "Copied url to clipboard!",
"copied_url_clipboard": "將網址複製到剪貼簿!",
"docs": "文檔",
"do_you_wish_to_continue": "你確定要繼續?",
"note": "備註",
"pay_invoice": "Pay Invoice",
"login_successfully": "Logged in successfully!",
"logged_out_successfully": "Logged out successfully",
"mark_as_default": "Mark as default",
"no_data_found": "No data found",
"pay_invoice": "支付發票",
"login_successfully": "登入成功.",
"logged_out_successfully": "登出成功",
"mark_as_default": "標記為預設值",
"no_data_found": "未有數據",
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"of": "of",
"results": "results"
"previous": "上一頁",
"next": "下一頁",
"showing": "顯示",
"to": "",
"of": "中的",
"results": "結果"
},
"file_upload": {
"drag_a_file": "Drag a file here or",
"browse": "browse",
"to_choose": "to choose a file"
"drag_a_file": "將文件拖到此處 或",
"browse": "瀏覽",
"to_choose": "選擇文件"
},
"multiselect": {
"the_list_is_empty": "The list is empty",
"no_results_found": "No results found"
"the_list_is_empty": "此清單是空的",
"no_results_found": "未找到結果"
},
"copy_to_clipboard": "Copy to Clipboard"
"copy_to_clipboard": "複製到剪貼簿"
},
"dashboard": {
"select_year": "選擇年份",
"cards": {
"due_amount": "應付金額",
"customers": "Customer | Customers",
"invoices": "Invoice | Invoices",
"customers": "客戶|客戶",
"invoices": "發票 | 發票",
"estimates": "Estimate | Estimates",
"payments": "Payment | Payments"
"payments": "付款 | 付款"
},
"chart_info": {
"total_sales": "銷售",
@@ -191,6 +191,7 @@
"customers": {
"title": "客户",
"prefix": "前置字串",
"tax_id": "稅務識別碼",
"add_customer": "新增客户",
"contacts_list": "客户列表",
"name": "名稱",
@@ -564,7 +565,7 @@
"type_item_description": "Type Item Description (optional)"
},
"frequency": {
"title": "Frequency",
"title": "Frequency (using cron format)",
"select_frequency": "Select Frequency",
"minute": "Minute",
"hour": "Hour",
@@ -863,6 +864,7 @@
"primary_currency": "主要貨幣",
"timezone": "時區",
"date_format": "日期格式",
"time_format": "Time Format",
"currencies": {
"title": "貨幣",
"currency": "貨幣 | 貨幣",
@@ -989,6 +991,7 @@
"delimiter_description": "Single character for specifying the boundary between 2 separate components. By default its set to -",
"delimiter_param_label": "Delimiter Value",
"date_format": "Date Format",
"time_format": "Time Format",
"date_format_description": "A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",
"date_format_param_label": "Format",
"sequence": "Sequence",
@@ -1233,6 +1236,7 @@
"time_zone": "時區",
"fiscal_year": "財政年度",
"date_format": "日期格式",
"time_format": "Time Fromat",
"discount_setting": "折扣設定",
"discount_per_item": "商品折扣",
"discount_setting_description": "啟用此項, 如果你要將折扣以每個獨立商品計算. 預設折扣以整單發票計算.",
@@ -1245,6 +1249,7 @@
"select_language": "選取語言",
"select_time_zone": "選取時區",
"select_date_format": "選擇日期格式",
"select_time_format": "Select Time Format",
"select_financial_year": "選擇財政年度",
"recurring_invoice_status": "Recurring Invoice Status",
"create_status": "Create Status",
@@ -1253,6 +1258,8 @@
"update_status": "Update Status",
"completed": "Completed",
"company_currency_unchangeable": "Company currency cannot be changed",
"invoice_use_time": "Use time in invoices",
"invoice_use_time_description": "Enable this if you want to select exact invoice time.",
"fiscal_years": {
"january_december": "January - December",
"february_january": "February - January",
@@ -1421,6 +1428,7 @@
"time_zone": "時區",
"fiscal_year": "財政年度",
"date_format": "日期格式",
"time_format": "Time Format",
"from_address": "寄件人地址",
"username": "使用者名稱",
"next": "下一個",
@@ -1616,6 +1624,8 @@
"pdf_tax_label": "Tax",
"pdf_tax_id": "Tax-ID",
"pdf_vat_id": "VAT-ID",
"pdf_amount_paid": "Amount Paid",
"pdf_amount_due": "Amount Due",
"mail_thanks": "Thanks",
"mail_view_estimate": "View Estimate",
"mail_viewed_estimate": ":name viewed this Estimate.",

View File

@@ -2,7 +2,7 @@
"private": true,
"type": "module",
"scripts": {
"dev": "vite --host",
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"test": "eslint ./resources/scripts --ext .js,.vue"
@@ -10,53 +10,54 @@
"devDependencies": {
"@rvxlab/tailwind-plugin-ios-full-height": "^1.1.0",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/forms": "^0.5.7",
"@tailwindcss/typography": "^0.5.10",
"@vitejs/plugin-vue": "^5.0.3",
"@vue/compiler-sfc": "^3.4.15",
"autoprefixer": "^10.4.17",
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.16",
"@vitejs/plugin-vue": "^5.2.1",
"@vue/compiler-sfc": "^3.5.13",
"autoprefixer": "^10.4.20",
"cross-env": "^7.0.3",
"eslint": "^8.56.0",
"eslint": "^9.18.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-vue": "^9.20.1",
"postcss": "^8.4.33",
"prettier": "^3.2.4",
"sass": "^1.70.0",
"tailwind-scrollbar": "^3.0.5",
"tailwindcss": "^3.4.1"
"eslint-plugin-vue": "^9.32.0",
"postcss": "^8.4.49",
"prettier": "^3.4.2",
"sass": "^1.83.1",
"tailwind-scrollbar": "^3.1.0",
"tailwindcss": "^3.4.17"
},
"dependencies": {
"@headlessui/vue": "^1.7.17",
"@headlessui/vue": "^1.7.23",
"@heroicons/vue": "^1.0.6",
"@popperjs/core": "^2.11.8",
"@stripe/stripe-js": "^2.4.0",
"@tiptap/core": "^2.1.16",
"@tiptap/extension-text-align": "^2.1.16",
"@tiptap/starter-kit": "^2.1.16",
"@tiptap/vue-3": "^2.1.16",
"@tiptap/pm": "^2.0.0",
"@tiptap/core": "^2.11.2",
"@tiptap/extension-link": "^2.11.2",
"@tiptap/extension-text-align": "^2.11.2",
"@tiptap/pm": "^2.11.2",
"@tiptap/starter-kit": "^2.11.2",
"@tiptap/vue-3": "^2.11.2",
"@types/node": "^20.11.9",
"@vuelidate/components": "^1.2.6",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"@vueuse/core": "^10.7.2",
"axios": "0.28.1",
"@vueuse/core": "^12.4.0",
"axios": "0.29.0",
"chart.js": "^2.9.4",
"guid": "0.0.12",
"laravel-vite-plugin": "^1.0.0",
"guid": "^0.0.12",
"laravel-vite-plugin": "^1.1.1",
"lodash": "^4.17.21",
"maska": "^2.1.11",
"maska": "^3.0.4",
"mini-svg-data-uri": "^1.4.4",
"moment": "^2.30.1",
"path": "^0.12.7",
"pinia": "^2.1.7",
"pinia": "^2.3.0",
"v-money3": "^3.24.1",
"v-tooltip": "^4.0.0-beta.17",
"vite": "5.3.5",
"vue": "^3.4",
"vue-flatpickr-component": "^11.0.3",
"vue-i18n": "^9.9.0",
"vue-router": "^4.2.5",
"vite": "^6.0.7",
"vue": "^3.5",
"vue-flatpickr-component": "^11.0.5",
"vue-i18n": "^11.0.1",
"vue-router": "^4.5.0",
"vuedraggable": "^4.1.0"
}
}

View File

@@ -19,3 +19,36 @@
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
# Enable Brotli compression with priority over gzip
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript application/json application/xml application/rss+xml application/font-woff application/font-woff2
# Force Brotli compression if available
SetEnvIf Accept-Encoding br brotli
</IfModule>
# Enable gzip compression only if Brotli is unavailable
<IfModule mod_deflate.c>
<IfModule !mod_brotli.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json application/xml application/rss+xml application/font-woff application/font-woff2
</IfModule>
</IfModule>
# This configuration allows browsers to cache assets locally
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|jpg|jpeg|png|gif|ico|svg|woff2?|ttf|eot)$">
<If "%{REQUEST_URI} =~ m#^/build/assets/#">
Header set Cache-Control "public, max-age=31536000, immutable"
Header set Pragma "public"
Header unset ETag
FileETag None
Header unset Last-Modified
</If>
</FilesMatch>
# Security headers
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
</IfModule>

View File

@@ -59,18 +59,9 @@ Join the InvoiceShelf discord server to discuss:
- [x] Multiple Companies
- [x] Recurring Invoices
- [x] Customer Portal
- [x] Accept Payments (Stripe Integration)
- [x] White Labeling (Easy Invoice, Email & Consumer Portal Theme customisation)
- [ ] Modules API
- [ ] Blockchain Integration
- [ ] Web 3.0 Accounting
- [ ] Vendors & Bills
- [ ] Inventory Management
- [ ] Payment Reminders
- [ ] Improve Accessibility
- [ ] Debit & Credit Notes
- [ ] Time Tracking
- [ ] Full service Payroll
- [ ] Accept Payments (Stripe Integration)
- [ ] Improved template system (invoices and estimate)
- [ ] Modules and templates marketplace
## Copyright

View File

@@ -1,3 +1,6 @@
@use "themes.scss";
@use "components/animation.scss";
@tailwind base;
@tailwind components;
@@ -44,16 +47,6 @@
src: url("$fonts/Poppins-SemiBold.ttf") format("truetype");
}
// Default Theme
//----------------------------------
@import "themes.scss";
// Base Components
//----------------------------------
@import "components/animation.scss";
body {
min-height: 100vh;
min-height: -webkit-fill-available;

View File

@@ -74,7 +74,7 @@ import { useExchangeRateStore } from '@/scripts/admin/stores/exchange-rate'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useRoute } from 'vue-router'
import { useNotificationStore } from '@/scripts/stores/notification'
import { computed, ref } from '@vue/runtime-core'
import { computed, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers, numeric, decimal } from '@vuelidate/validators'

Some files were not shown because too many files have changed in this diff Show More