Release 2.48 (#5789)
This commit is contained in:
1
.github/workflows/docker.yaml
vendored
1
.github/workflows/docker.yaml
vendored
@@ -73,6 +73,7 @@ jobs:
|
||||
target: prod
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
kimai/kimai2:stable
|
||||
kimai/kimai2:apache
|
||||
kimai/kimai2:apache-${{ env.kimai_version }}
|
||||
push: true
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@import "variables";
|
||||
@import "layout";
|
||||
@import "error-page";
|
||||
@import "print";
|
||||
|
||||
33
assets/sass/variables.scss
Normal file
33
assets/sass/variables.scss
Normal file
@@ -0,0 +1,33 @@
|
||||
:root {
|
||||
--kimai-public-holiday: var(--tblr-lime);
|
||||
--kimai-holiday: var(--tblr-green);
|
||||
--kimai-sickness: var(--tblr-yellow);
|
||||
--kimai-time-off: var(--tblr-blue);
|
||||
--kimai-other: var(--tblr-purple);
|
||||
|
||||
--kimai-public-holiday-bg: var(--tblr-lime-lt);
|
||||
--kimai-holiday-bg: var(--tblr-green-lt);
|
||||
--kimai-sickness-bg: var(--tblr-yellow-lt);
|
||||
--kimai-time-off-bg: var(--tblr-blue-lt);
|
||||
--kimai-other-bg: var(--tblr-purple-lt);
|
||||
|
||||
--kimai-unexpected-bg: var(--tblr-pink-lt);
|
||||
--kimai-missing-bg: var(--tblr-pink-lt);
|
||||
--kimai-weekend-bg: var(--tblr-bg-surface-tertiary);
|
||||
}
|
||||
|
||||
.public-holiday { color: var(--kimai-public-holiday); }
|
||||
.holiday { color: var(--kimai-holiday); }
|
||||
.sickness { color: var(--kimai-sickness); }
|
||||
.time-off { color: var(--kimai-time-off); }
|
||||
.other { color: var(--kimai-other); }
|
||||
|
||||
.bg-public-holiday{ background-color: var(--kimai-public-holiday-bg); --tblr-table-bg: var(--kimai-public-holiday-bg); i.fas{ color: var(--kimai-public-holiday); } };
|
||||
.bg-holiday { background-color: var(--kimai-holiday-bg); --tblr-table-bg: var(--kimai-holiday-bg); i.fas{ color: var(--kimai-holiday); } };
|
||||
.bg-sickness { background-color: var(--kimai-sickness-bg); --tblr-table-bg: var(--kimai-sickness-bg); i.fas{ color: var(--kimai-sickness); } };
|
||||
.bg-time-off { background-color: var(--kimai-time-off-bg); --tblr-table-bg: var(--kimai-time-off-bg); i.fas{ color: var(--kimai-time-off); } };
|
||||
.bg-other { background-color: var(--kimai-other-bg); --tblr-table-bg: var(--kimai-other-bg); i.fas{ color: var(--kimai-other); } };
|
||||
|
||||
.bg-unexpected { background-color: var(--kimai-unexpected-bg); --tblr-table-bg: var(--kimai-unexpected-bg); };
|
||||
.bg-missing { background-color: var(--kimai-missing-bg); --tblr-table-bg: var(--kimai-missing-bg); };
|
||||
.bg-weekend { background-color: var(--kimai-weekend-bg); --tblr-table-bg: var(--kimai-weekend-bg); };
|
||||
600
composer.lock
generated
600
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -75,6 +75,7 @@ tabler:
|
||||
fax: fas fa-fax
|
||||
filter: fas fa-filter
|
||||
help: far fa-question-circle
|
||||
holiday: fas fa-umbrella-beach
|
||||
home: fas fa-home
|
||||
info: fas fa-info-circle
|
||||
import: fas fa-file-import
|
||||
@@ -95,6 +96,7 @@ tabler:
|
||||
ods: fas fa-table
|
||||
off: fas fa-toggle-off
|
||||
on: fas fa-toggle-on
|
||||
other: fas fa-file-alt
|
||||
password: fas fa-key
|
||||
pause: fas fa-pause
|
||||
pause-small: far fa-pause-circle
|
||||
@@ -108,6 +110,7 @@ tabler:
|
||||
profile: fas fa-user-edit
|
||||
profile-stats: far fa-chart-bar
|
||||
project: fas fa-briefcase
|
||||
public-holiday: fas fa-calendar-day
|
||||
repeat: fas fa-repeat
|
||||
reporting: far fa-chart-bar
|
||||
report: far fa-chart-bar
|
||||
@@ -119,6 +122,7 @@ tabler:
|
||||
save: far fa-save
|
||||
search: fas fa-search
|
||||
settings: fas fa-cog
|
||||
sickness: fas fa-prescription-bottle-medical
|
||||
shop: fas fa-shopping-cart
|
||||
spinner: fas fa-spinner
|
||||
start: fas fa-play
|
||||
@@ -130,6 +134,7 @@ tabler:
|
||||
team: fas fa-users
|
||||
timesheet: fas fa-clock
|
||||
timesheet-team: fas fa-user-clock
|
||||
time-off: fas fa-couch
|
||||
trash: far fa-trash-alt
|
||||
unlocked: fas fa-unlock-alt
|
||||
upload: fas fa-upload
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -6,7 +6,7 @@
|
||||
"/build/app.41748d55.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/app.e64b4d08.css"
|
||||
"/build/app.6bfb9c66.css"
|
||||
]
|
||||
},
|
||||
"app-rtl": {
|
||||
@@ -15,7 +15,7 @@
|
||||
"/build/app-rtl.15853b82.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/app-rtl.6b5a0ee9.css"
|
||||
"/build/app-rtl.16271884.css"
|
||||
]
|
||||
},
|
||||
"export-pdf": {
|
||||
@@ -82,9 +82,9 @@
|
||||
"integrity": {
|
||||
"/build/runtime.684e9f6d.js": "sha384-suKiEX2de4fdNqQzdYbUd6osp4AepD9FiMXl+1QdvgMW9dcQqUWQNQasf3KWzwLr",
|
||||
"/build/app.41748d55.js": "sha384-iVPHnOXYjVDuq8567h8I3U2gl5SCV3mNMFNQCJdgMiNuFMZ4KO7PXOLanjgcGzTt",
|
||||
"/build/app.e64b4d08.css": "sha384-Rapl6RNn58g7oayglp7MWOER7tDNPpChx6RKOOWe0mg6uFgaJjy3M51ZSkxXm+Hg",
|
||||
"/build/app.6bfb9c66.css": "sha384-38+zSolYBrZdSwNcrDi5qCaQGCQlBJRKwtsJV+pnrf8rCCpf6z/M7fEpV4tS79Sz",
|
||||
"/build/app-rtl.15853b82.js": "sha384-UnKKgLMu9FnRT+CFE0no/+UiUks012bYriQdUWa6f02mo6Lswl947mPybjvKL503",
|
||||
"/build/app-rtl.6b5a0ee9.css": "sha384-eW8BEaA6S1jAFPB8lUCBTvcm4wZZQ3SHbiHVZlxe814TXGT9L4/4BN8CuuGehZ6o",
|
||||
"/build/app-rtl.16271884.css": "sha384-P1x4vYfjfM4JL55NQ3sfLiy+BSy8cM4bNcshj9M62nMJ4JD2xAWUioNv6VrmaK7U",
|
||||
"/build/export-pdf.395749ab.js": "sha384-3Hjvmu4FC/0dhHnR8kyRBU7k2xMNy1lxBpGgOkrw8PxXnwyQDM8/5bQmkJbjVT1+",
|
||||
"/build/export-pdf.d8a6c23b.css": "sha384-ztepocHE4rnGE9eKZ4kL6jTKaePUyiwiB9TjJjstjpf/ckcKg1HedrEOOk/8ElJg",
|
||||
"/build/invoice.42b319e4.js": "sha384-xxK7sCe/ZhTjMPFPeX1xvILURxNRZz2hJHZxAGVaw9zE6TC++2/6y2eKqg8cz852",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"build/app.css": "/build/app.e64b4d08.css",
|
||||
"build/app.css": "/build/app.6bfb9c66.css",
|
||||
"build/app.js": "/build/app.41748d55.js",
|
||||
"build/app-rtl.css": "/build/app-rtl.6b5a0ee9.css",
|
||||
"build/app-rtl.css": "/build/app-rtl.16271884.css",
|
||||
"build/app-rtl.js": "/build/app-rtl.15853b82.js",
|
||||
"build/export-pdf.css": "/build/export-pdf.d8a6c23b.css",
|
||||
"build/export-pdf.js": "/build/export-pdf.395749ab.js",
|
||||
|
||||
@@ -17,11 +17,11 @@ final class Constants
|
||||
/**
|
||||
* The current release version
|
||||
*/
|
||||
public const VERSION = '2.47.0';
|
||||
public const VERSION = '2.48.0';
|
||||
/**
|
||||
* The current release: major * 10000 + minor * 100 + patch
|
||||
*/
|
||||
public const VERSION_ID = 24700;
|
||||
public const VERSION_ID = 24800;
|
||||
/**
|
||||
* The software name
|
||||
*/
|
||||
|
||||
@@ -108,10 +108,30 @@ final class DoctorController extends AbstractController
|
||||
'logLines' => $logLines,
|
||||
'logSize' => $this->getLogSize(),
|
||||
'composer' => $this->getComposerPackages(),
|
||||
'release' => $latestRelease
|
||||
'release' => $latestRelease,
|
||||
'opcache' => $this->getOpcacheConfiguration()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{enabled: bool, status: false|array<mixed>}
|
||||
*/
|
||||
private function getOpcacheConfiguration(): array
|
||||
{
|
||||
$status = \function_exists('opcache_get_status') ? opcache_get_status() : false;
|
||||
|
||||
$enabled = \is_array($status) && $status['opcache_enabled'];
|
||||
|
||||
if ($enabled && \array_key_exists('scripts', $status)) {
|
||||
unset($status['scripts']);
|
||||
}
|
||||
|
||||
return [
|
||||
'enabled' => $enabled,
|
||||
'status' => $status,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
@@ -264,7 +284,12 @@ final class DoctorController extends AbstractController
|
||||
'sys_temp_dir',
|
||||
'date.timezone',
|
||||
'session.gc_maxlifetime',
|
||||
'disable_functions'
|
||||
'disable_functions',
|
||||
'opcache.enable',
|
||||
'opcache.memory_consumption',
|
||||
'opcache.interned_strings_buffer',
|
||||
'opcache.max_accelerated_files',
|
||||
'opcache.validate_timestamps',
|
||||
];
|
||||
|
||||
$settings = [];
|
||||
|
||||
@@ -256,6 +256,18 @@ class ExportTemplate
|
||||
return \is_string($font) ? $font : null;
|
||||
}
|
||||
|
||||
public function isAvailableForAll(): bool
|
||||
{
|
||||
$isAllowed = $this->getOption('user_access', false);
|
||||
|
||||
return \is_bool($isAllowed) ? $isAllowed : false;
|
||||
}
|
||||
|
||||
public function setAvailableForAll(bool $userAccess): void
|
||||
{
|
||||
$this->setOption('user_access', $userAccess);
|
||||
}
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return $this->title ?? 'New';
|
||||
|
||||
@@ -34,7 +34,7 @@ final class TimesheetsSubscriber extends AbstractActionsSubscriber
|
||||
|
||||
if ($this->isGranted('export_own_timesheet')) {
|
||||
foreach ($this->serviceExport->getTimesheetExporter() as $exporter) {
|
||||
$event->addActionToSubmenu('export', $exporter->getId(), ['url' => $this->path('timesheet_export', ['exporter' => $exporter->getId()]), 'class' => 'toolbar-action', 'title' => 'button.' . $exporter->getId(), 'translation_domain' => 'messages']);
|
||||
$event->addActionToSubmenu('export', $exporter->getId(), ['url' => $this->path('timesheet_export', ['exporter' => $exporter->getId()]), 'class' => 'toolbar-action', 'title' => $exporter->getTitle()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ final class TimesheetsTeamSubscriber extends AbstractActionsSubscriber
|
||||
|
||||
if ($this->isGranted('export_other_timesheet')) {
|
||||
foreach ($this->serviceExport->getTimesheetExporter() as $exporter) {
|
||||
$event->addActionToSubmenu('export', $exporter->getId(), ['url' => $this->path('admin_timesheet_export', ['exporter' => $exporter->getId()]), 'class' => 'toolbar-action', 'title' => 'button.' . $exporter->getId(), 'translation_domain' => 'messages']);
|
||||
$event->addActionToSubmenu('export', $exporter->getId(), ['url' => $this->path('admin_timesheet_export', ['exporter' => $exporter->getId()]), 'class' => 'toolbar-action', 'title' => $exporter->getTitle()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ final class CsvRendererFactory
|
||||
|
||||
public function createDefault(): CsvRenderer
|
||||
{
|
||||
$template = new DefaultTemplate($this->eventDispatcher, 'csv');
|
||||
$template = new DefaultTemplate($this->eventDispatcher, 'csv', 'en', 'csv');
|
||||
|
||||
return new CsvRenderer($this->converter, $this->translator, $template);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ final class HtmlRendererFactory
|
||||
) {
|
||||
}
|
||||
|
||||
public function create(string $id, string $template): HtmlRenderer
|
||||
public function create(string $id, string $template, string $title = 'print'): HtmlRenderer
|
||||
{
|
||||
return new HtmlRenderer(
|
||||
$this->twig,
|
||||
@@ -33,7 +33,7 @@ final class HtmlRendererFactory
|
||||
$this->projectStatisticService,
|
||||
$this->activityStatisticService,
|
||||
$id,
|
||||
'print',
|
||||
$title,
|
||||
$template
|
||||
);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ final class XlsxRendererFactory
|
||||
|
||||
public function createDefault(): XlsxRenderer
|
||||
{
|
||||
$template = new DefaultTemplate($this->eventDispatcher, 'xlsx');
|
||||
$template = new DefaultTemplate($this->eventDispatcher, 'xlsx', 'en', 'xlsx');
|
||||
|
||||
return new XlsxRenderer($this->converter, $this->translator, $template);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Export;
|
||||
|
||||
use App\Entity\ExportableItem;
|
||||
use App\Entity\ExportTemplate;
|
||||
use App\Event\ExportItemsQueryEvent;
|
||||
use App\Export\Renderer\CsvRendererFactory;
|
||||
use App\Export\Renderer\HtmlRendererFactory;
|
||||
@@ -74,6 +75,15 @@ final class ServiceExport
|
||||
$this->renderer[] = $renderer;
|
||||
}
|
||||
|
||||
private function filenameToTitle(string $title): string
|
||||
{
|
||||
if (str_contains($title, '.')) {
|
||||
$title = explode('.', $title)[0];
|
||||
}
|
||||
|
||||
return str_replace(['-', '_'], ' ', $title);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ExportRendererInterface[]
|
||||
*/
|
||||
@@ -82,32 +92,15 @@ final class ServiceExport
|
||||
$renderer = [
|
||||
$this->csvRendererFactory->createDefault(),
|
||||
$this->xlsxRendererFactory->createDefault(),
|
||||
$this->pdfRendererFactory->create('pdf', 'export/pdf-layout.html.twig', 'default'),
|
||||
$this->htmlRendererFactory->create('html', 'export/print.html.twig'),
|
||||
$this->pdfRendererFactory->create('pdf', 'export/pdf-layout.html.twig', 'pdf'),
|
||||
$this->htmlRendererFactory->create('print', 'export/print.html.twig'),
|
||||
];
|
||||
|
||||
foreach ($this->exportTemplateRepository->findAll() as $template) {
|
||||
$tpl = new Template((string) $template->getId(), $template->getTitle()); // @phpstan-ignore argument.type
|
||||
$tpl->setColumns($template->getColumns());
|
||||
$tpl->setLocale($template->getLanguage());
|
||||
$tpl->setOptions($template->getOptions());
|
||||
|
||||
switch ($template->getRenderer()) {
|
||||
case 'csv':
|
||||
$renderer[] = $this->csvRendererFactory->create($tpl);
|
||||
break;
|
||||
|
||||
case 'xlsx':
|
||||
$renderer[] = $this->xlsxRendererFactory->create($tpl);
|
||||
break;
|
||||
|
||||
case 'pdf':
|
||||
$renderer[] = $this->pdfRendererFactory->createFromTemplate($tpl);
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->logger->error('Unknown export template type: ' . $template->getRenderer());
|
||||
break;
|
||||
try {
|
||||
$renderer[] = $this->createTemplateFromExportTemplate($template);
|
||||
} catch (\Exception $exception) {
|
||||
$this->logger->error('Unknown export template type: ' . $template->getRenderer());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +117,7 @@ final class ServiceExport
|
||||
continue;
|
||||
}
|
||||
|
||||
$renderer[] = $this->htmlRendererFactory->create($tplName, '@export/' . $tplName);
|
||||
$renderer[] = $this->htmlRendererFactory->create($tplName, '@export/' . $tplName, $this->filenameToTitle($tplName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +129,7 @@ final class ServiceExport
|
||||
continue;
|
||||
}
|
||||
|
||||
$renderer[] = $this->pdfRendererFactory->create($tplName, '@export/' . $tplName);
|
||||
$renderer[] = $this->pdfRendererFactory->create($tplName, '@export/' . $tplName, $this->filenameToTitle($tplName));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -144,6 +137,28 @@ final class ServiceExport
|
||||
return array_merge($this->renderer, $renderer);
|
||||
}
|
||||
|
||||
private function createTemplateFromExportTemplate(ExportTemplate $template): ExportRendererInterface
|
||||
{
|
||||
$tpl = new Template((string) $template->getId(), $template->getTitle()); // @phpstan-ignore argument.type
|
||||
$tpl->setColumns($template->getColumns());
|
||||
$tpl->setLocale($template->getLanguage());
|
||||
$tpl->setOptions($template->getOptions());
|
||||
|
||||
switch ($template->getRenderer()) {
|
||||
case 'csv':
|
||||
return $this->csvRendererFactory->create($tpl);
|
||||
|
||||
case 'xlsx':
|
||||
return $this->xlsxRendererFactory->create($tpl);
|
||||
|
||||
case 'pdf':
|
||||
return $this->pdfRendererFactory->createFromTemplate($tpl);
|
||||
|
||||
default:
|
||||
throw new \Exception('Unknown export template type: ' . $template->getRenderer());
|
||||
}
|
||||
}
|
||||
|
||||
public function getRendererById(string $id): ?ExportRendererInterface
|
||||
{
|
||||
foreach ($this->getRenderer() as $renderer) {
|
||||
@@ -165,6 +180,7 @@ final class ServiceExport
|
||||
*/
|
||||
public function getTimesheetExporter(): array
|
||||
{
|
||||
// TODO 3.0 cache the result, as this is one extra database query on the timesheet pages
|
||||
$exporter = [
|
||||
$this->pdfRendererFactory->create('pdf', '@export/timesheet.pdf.twig'),
|
||||
$this->xlsxRendererFactory->createDefault(),
|
||||
@@ -172,6 +188,17 @@ final class ServiceExport
|
||||
$this->htmlRendererFactory->create('print', 'timesheet/export.html.twig'),
|
||||
];
|
||||
|
||||
foreach ($this->exportTemplateRepository->findAll() as $template) {
|
||||
if (!$template->isAvailableForAll()) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
$exporter[] = $this->createTemplateFromExportTemplate($template);
|
||||
} catch (\Exception $exception) {
|
||||
$this->logger->error('Unknown export template type: ' . $template->getRenderer());
|
||||
}
|
||||
}
|
||||
|
||||
return array_merge($this->timesheetExporter, $exporter);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ use App\Form\Type\ExportRendererType;
|
||||
use App\Form\Type\ExportSummaryColumnsType;
|
||||
use App\Form\Type\LanguageType;
|
||||
use App\Form\Type\PdfFontType;
|
||||
use App\Form\Type\YesNoType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
@@ -22,6 +23,9 @@ use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Validator\Constraints\Length;
|
||||
|
||||
/**
|
||||
* TODO rename with 3.0 to ExportTemplateForm
|
||||
*/
|
||||
class ExportTemplateSpreadsheetForm extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
@@ -77,6 +81,11 @@ class ExportTemplateSpreadsheetForm extends AbstractType
|
||||
'row_attr' => ['data-type' => 'pdf'],
|
||||
'required' => false,
|
||||
]);
|
||||
|
||||
$builder->add('availableForAll', YesNoType::class, [
|
||||
'label' => 'user_access_all',
|
||||
'required' => false,
|
||||
]);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
|
||||
@@ -19,9 +19,9 @@ final class ExportRendererType extends AbstractType
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
'choices' => [
|
||||
'button.csv' => 'csv',
|
||||
'button.xlsx' => 'xlsx',
|
||||
'button.pdf' => 'pdf'
|
||||
'csv' => 'csv',
|
||||
'xlsx' => 'xlsx',
|
||||
'pdf' => 'pdf'
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -33,8 +33,9 @@ final class TeamType extends AbstractType
|
||||
return $team->getName();
|
||||
},
|
||||
'documentation' => [
|
||||
'type' => 'integer',
|
||||
'description' => 'Team ID',
|
||||
'type' => 'array',
|
||||
'items' => ['type' => 'integer', 'description' => 'Team IDs'],
|
||||
'description' => 'Array of Team IDs',
|
||||
],
|
||||
]);
|
||||
|
||||
|
||||
42
src/Twig/SecurityPolicy/DefaultPolicy.php
Normal file
42
src/Twig/SecurityPolicy/DefaultPolicy.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Twig\SecurityPolicy;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Attribute\Exclude;
|
||||
use Twig\Sandbox\SecurityPolicyInterface;
|
||||
|
||||
/**
|
||||
* @deprecated since 2.47.0 - use StrictPolicy instead
|
||||
*/
|
||||
#[Exclude]
|
||||
final class DefaultPolicy implements SecurityPolicyInterface
|
||||
{
|
||||
private SecurityPolicyInterface $securityPolicy;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->securityPolicy = new StrictPolicy();
|
||||
}
|
||||
|
||||
public function checkSecurity($tags, $filters, $functions): void
|
||||
{
|
||||
$this->securityPolicy->checkSecurity($tags, $filters, $functions);
|
||||
}
|
||||
|
||||
public function checkMethodAllowed($obj, $method): void
|
||||
{
|
||||
$this->securityPolicy->checkMethodAllowed($obj, $method);
|
||||
}
|
||||
|
||||
public function checkPropertyAllowed($obj, $property): void
|
||||
{
|
||||
$this->securityPolicy->checkPropertyAllowed($obj, $property);
|
||||
}
|
||||
}
|
||||
42
src/Twig/SecurityPolicy/ExportPolicy.php
Normal file
42
src/Twig/SecurityPolicy/ExportPolicy.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Twig\SecurityPolicy;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Attribute\Exclude;
|
||||
use Twig\Sandbox\SecurityPolicyInterface;
|
||||
|
||||
/**
|
||||
* @deprecated since 2.47.0 - use StrictPolicy instead
|
||||
*/
|
||||
#[Exclude]
|
||||
final class ExportPolicy implements SecurityPolicyInterface
|
||||
{
|
||||
private SecurityPolicyInterface $securityPolicy;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->securityPolicy = new StrictPolicy();
|
||||
}
|
||||
|
||||
public function checkSecurity($tags, $filters, $functions): void
|
||||
{
|
||||
$this->securityPolicy->checkSecurity($tags, $filters, $functions);
|
||||
}
|
||||
|
||||
public function checkMethodAllowed($obj, $method): void
|
||||
{
|
||||
$this->securityPolicy->checkMethodAllowed($obj, $method);
|
||||
}
|
||||
|
||||
public function checkPropertyAllowed($obj, $property): void
|
||||
{
|
||||
$this->securityPolicy->checkPropertyAllowed($obj, $property);
|
||||
}
|
||||
}
|
||||
42
src/Twig/SecurityPolicy/InvoicePolicy.php
Normal file
42
src/Twig/SecurityPolicy/InvoicePolicy.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace App\Twig\SecurityPolicy;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Attribute\Exclude;
|
||||
use Twig\Sandbox\SecurityPolicyInterface;
|
||||
|
||||
/**
|
||||
* @deprecated since 2.47.0 - use StrictPolicy instead
|
||||
*/
|
||||
#[Exclude]
|
||||
final class InvoicePolicy implements SecurityPolicyInterface
|
||||
{
|
||||
private SecurityPolicyInterface $securityPolicy;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->securityPolicy = new StrictPolicy();
|
||||
}
|
||||
|
||||
public function checkSecurity($tags, $filters, $functions): void
|
||||
{
|
||||
$this->securityPolicy->checkSecurity($tags, $filters, $functions);
|
||||
}
|
||||
|
||||
public function checkMethodAllowed($obj, $method): void
|
||||
{
|
||||
$this->securityPolicy->checkMethodAllowed($obj, $method);
|
||||
}
|
||||
|
||||
public function checkPropertyAllowed($obj, $property): void
|
||||
{
|
||||
$this->securityPolicy->checkPropertyAllowed($obj, $property);
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,6 @@ final class UserDurationYear extends AbstractCounterYear
|
||||
|
||||
protected function getFinancialYearTitle(): string
|
||||
{
|
||||
return 'stats.durationFinancialYear';
|
||||
return 'stats.userDurationYear';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,12 @@ final class DayAddon
|
||||
{
|
||||
private bool $billable = true;
|
||||
|
||||
public function __construct(private string $title, private int $duration, private int $visibleDuration)
|
||||
public function __construct(
|
||||
private readonly string $title,
|
||||
private readonly int $duration,
|
||||
private readonly int $visibleDuration,
|
||||
private readonly ?string $type = null
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -41,4 +46,9 @@ final class DayAddon
|
||||
{
|
||||
return $this->visibleDuration;
|
||||
}
|
||||
|
||||
public function getType(): ?string
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,28 +158,35 @@
|
||||
</td>
|
||||
{% set dayCount = 0 %}
|
||||
{% for day in month.days %}
|
||||
{% set class = 'text-end contractDay text-nowrap' %}
|
||||
{% if day.workingTime.expectedTime == 0 %}
|
||||
{% set class = class ~ ' weekend' %}
|
||||
{% endif %}
|
||||
{% set style = null %}
|
||||
{% if day.workingTime.expectedTime > 0 and day.workingTime.actualTime == 0 and now > day.day %}
|
||||
{% set class = class ~ ' bg-orange-lt' %}
|
||||
{% set style = 'missing' %}
|
||||
{% elseif day.workingTime.expectedTime == 0 and day.workingTime.actualTime > 0 and now > day.day %}
|
||||
{% set class = class ~ ' bg-yellow-lt' %}
|
||||
{% set style = 'unexpected' %}
|
||||
{% endif %}
|
||||
<td class="{{ class }}">
|
||||
{% if (day.workingTime.expectedTime != 0 or day.workingTime.actualTime != 0) and (now > day.day or day.workingTime.actualTime > 0) %}
|
||||
{% if day.hasAddons() %}
|
||||
{% set statusTitle = '' %}
|
||||
{% for addon in day.getAddons() %}
|
||||
{% set statusTitle = statusTitle ~ (addon.title|trans) ~ ' (' ~ addon.visibleDuration|duration(decimal) ~ ')' %}
|
||||
{% if not loop.last %}
|
||||
{% set statusTitle = statusTitle ~ ', ' %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<span class="status-dot status-azure" data-toggle="tooltip" data-placement="top" title="{{ statusTitle }}"></span>
|
||||
{% set statusTitle = null %}
|
||||
{% if day.hasAddons() %}
|
||||
{% for addon in day.getAddons() %}
|
||||
{% set style = addon.type ?? style %}
|
||||
{% set statusTitle = (statusTitle ?? '') ~ (addon.title|trans) %}
|
||||
{% if addon.visibleDuration > 0 %}
|
||||
{% set statusTitle = statusTitle ~ ' (' ~ addon.visibleDuration|duration(decimal) ~ ')' %}
|
||||
{% endif %}
|
||||
{% if not loop.last %}
|
||||
{% set statusTitle = statusTitle ~ ', ' %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<td class="text-end contractDay text-nowrap{% if style is not null %} bg-{{ style }}{% endif %}"{% if statusTitle is not null %} data-toggle="tooltip" data-placement="top" title="{{ statusTitle }}"{% endif %}>
|
||||
{% if (day.workingTime.expectedTime != 0 or day.workingTime.actualTime != 0 or day.hasAddons()) and (now > day.day or day.workingTime.actualTime > 0) %}
|
||||
{% if style is not null and statusTitle is not null %}
|
||||
<i class="{{ style|icon }} fa-xs"></i>
|
||||
{% endif %}
|
||||
{% if day.workingTime.expectedTime == 0 and day.workingTime.actualTime == 0 %}
|
||||
--:--
|
||||
{% else %}
|
||||
{{ work_times_result(day.workingTime.expectedTime, day.workingTime.actualTime, decimal) }}
|
||||
{% endif %}
|
||||
{{ work_times_result(day.workingTime.expectedTime, day.workingTime.actualTime, decimal) }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% set dayCount = dayCount + 1 %}
|
||||
|
||||
@@ -162,4 +162,72 @@
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
{% set opcache_warning = not opcache['enabled'] %}
|
||||
{% embed '@theme/embeds/collapsible.html.twig' with {open: opcache_warning, boxtype: (opcache_warning ? 'danger' : 'success')} %}
|
||||
{% block title %}OPCache{% endblock %}
|
||||
{% block body_class %}p-0{% endblock %}
|
||||
{% block body %}
|
||||
{% import "macros/widgets.html.twig" as widgets %}
|
||||
{% if opcache_warning %}
|
||||
{{ widgets.alert('danger', 'Could not detect an active OPCache. This will significantly impact the performance of Kimai.') }}
|
||||
{% endif %}
|
||||
{% if opcache['status'] is iterable %}
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Opcache Enabled</th>
|
||||
<td class="text-break">{{ widgets.label_boolean(opcache['enabled']) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Opcache Full</th>
|
||||
<td class="text-break">{{ widgets.label_boolean(opcache['status']['cache_full']) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Memory Used</th>
|
||||
<td class="text-break">{{ (opcache['status']['memory_usage']['used_memory'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Memory Free</th>
|
||||
<td class="text-break">{{ (opcache['status']['memory_usage']['free_memory'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Interned-Strings Used</th>
|
||||
<td class="text-break">{{ (opcache['status']['interned_strings_usage']['used_memory'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Interned-Strings Free</th>
|
||||
<td class="text-break">{{ (opcache['status']['interned_strings_usage']['free_memory'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Cached Scripts</th>
|
||||
<td class="text-break">{{ opcache['status']['opcache_statistics']['num_cached_scripts'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Cached Keys</th>
|
||||
<td class="text-break">{{ opcache['status']['opcache_statistics']['num_cached_keys'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Max Keys</th>
|
||||
<td class="text-break">{{ opcache['status']['opcache_statistics']['max_cached_keys'] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Hit Rate</th>
|
||||
<td class="text-break">{{ opcache['status']['opcache_statistics']['opcache_hit_rate']|number_format(2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Jit enabled</th>
|
||||
<td class="text-break">{{ widgets.label_boolean(opcache['status']['jit']['enabled']) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Buffer Size</th>
|
||||
<td class="text-break">{{ (opcache['status']['jit']['buffer_size'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-nowrap w-min">Buffer Free</th>
|
||||
<td class="text-break">{{ (opcache['status']['jit']['buffer_free'] / 1024 / 1024)|number_format(2) }} MB</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -124,17 +124,13 @@
|
||||
<div class="btn-group me-auto" id="export-buttons" role="group">
|
||||
{% set allowCreate = is_granted('create_export_template') %}
|
||||
{% for type, group in buttons %}
|
||||
{% set btnTitle = ('button.' ~ type)|trans %}
|
||||
{% if btnTitle == ('button.' ~ type) %}
|
||||
{% set btnTitle = type|trans %}
|
||||
{% if type == 'html' %}
|
||||
{% set type = 'print' %}
|
||||
{% endif %}
|
||||
{% set btnTitle = type|trans %}
|
||||
{% if group|length == 1 %}
|
||||
{% for id, cfg in group %}
|
||||
{% set title = cfg.title %}
|
||||
{% set btnTitle2 = ('button.' ~ title)|trans %}
|
||||
{% if btnTitle2 != ('button.' ~ title) %}
|
||||
{% set btnTitle = btnTitle2 %}
|
||||
{% endif %}
|
||||
<button type="button" id="export-{{ id }}-button" class="btn btn-primary startExportBtn" data-type="{{ id }}">
|
||||
{{ btnTitle }}
|
||||
</button>
|
||||
@@ -146,13 +142,9 @@
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
{% for id, cfg in group %}
|
||||
{% set title = cfg.title %}
|
||||
{% set btnTitle = id|trans({}, 'export') %}
|
||||
{% if btnTitle == id %}
|
||||
{% set btnTitle = title|trans %}
|
||||
{% endif %}
|
||||
{% if btnTitle == id %}
|
||||
{% set btnTitle = id|split('.')|first|replace({'-': ' ', '_': ' '})|split(' ')|map(t => t|capitalize)|join(' ') %}
|
||||
{% set btnTitle = (cfg.title)|trans %}
|
||||
{% if loop.first %}
|
||||
{% set btnTitle = 'default'|trans %}
|
||||
{% endif %}
|
||||
<a href="#" class="dropdown-item startExportBtn" data-type="{{ id }}">
|
||||
{{ btnTitle }}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
{% set showCustomerSummary = false %}
|
||||
{% set decimal = true %}
|
||||
{% set showDateTimeShort = true %}
|
||||
{% block title %}{{ 'timesheet.pdf.twig'|trans({}, 'export') }}{% endblock %}
|
||||
{% block title %}{{ 'timesheet'|trans }}{% endblock %}
|
||||
{% block description %}
|
||||
{% if entry.description is not empty %}
|
||||
{{ entry.description|desc2html }}
|
||||
|
||||
@@ -105,7 +105,7 @@ class ExportControllerTest extends AbstractControllerBaseTestCase
|
||||
// assert export type buttons are available
|
||||
$expected = [
|
||||
'csv' => 'csv',
|
||||
'html' => 'html',
|
||||
'print' => 'html',
|
||||
'pdf' => 'pdf',
|
||||
'xlsx' => 'xlsx'
|
||||
];
|
||||
@@ -162,7 +162,7 @@ class ExportControllerTest extends AbstractControllerBaseTestCase
|
||||
// assert export type buttons are available
|
||||
$expected = [
|
||||
'csv' => 'csv',
|
||||
'html' => 'html',
|
||||
'print' => 'html',
|
||||
'pdf' => 'pdf',
|
||||
'xlsx' => 'xlsx'
|
||||
];
|
||||
@@ -227,7 +227,7 @@ class ExportControllerTest extends AbstractControllerBaseTestCase
|
||||
|
||||
// don't add daterange to make sure the current month is the default range
|
||||
$client->submit($form, [
|
||||
'renderer' => 'html',
|
||||
'renderer' => 'print',
|
||||
'markAsExported' => 1
|
||||
]);
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class XlsxRendererTest extends AbstractRendererTestCase
|
||||
|
||||
self::assertEquals('xlsx', $sut->getType());
|
||||
self::assertEquals('xlsx', $sut->getId());
|
||||
self::assertEquals('default', $sut->getTitle());
|
||||
self::assertEquals('xlsx', $sut->getTitle());
|
||||
self::assertFalse($sut->isInternal());
|
||||
$sut->setInternal(true);
|
||||
self::assertTrue($sut->isInternal());
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ar" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>ورقة التوقيت</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="bg" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Работно време</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ca" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Registre d'hores</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="cs" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Pracovní výkaz</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="da" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Timeoverblik</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Stundennachweis</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="de-CH" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Stundenzettel</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="el" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Χρονοδιάγραμμα</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="en" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Timesheet</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="eo" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="es" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Parte de horas</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="et" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="eu" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="fa" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">تایم شیت</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="fi" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Kellokortti</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="fo" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="fr" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Feuille de temps</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="he" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>גיליון שעות</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="hr" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Vremenska tablica</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="hu" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Munkaidő-nyilvántartás</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="id" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Lembar Waktu</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="it" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" approved="yes">
|
||||
<source>Timesheet</source>
|
||||
<target state="final">Foglio di presenza</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ja" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">タイムシート</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ko" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>근무 시간 기록표</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="lv" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="mk" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Временски лист</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="nb-NO" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Timeseddel</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="nl" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Tijdrooster</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="pa" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="pl" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Ewidencja pomiarów</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="pt" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Quadro de horários</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="pt-BR" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Planilha de horários</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ro" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Fișă de pontaj</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ru" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Табель рабочего времени</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="sk" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Pracovný výkaz</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="sl" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="sv" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Tidrapport</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="ta" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve" approved="yes">
|
||||
<source>Timesheet</source>
|
||||
<target state="final">நேரத்தாள்</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="tr" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target>Zaman çizelgesi</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="uk" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Табель робочого часу</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="vi" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Bảng chấm công</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">时间表</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" target-language="zh-Hant" datatype="plaintext" original="export.en.xlf">
|
||||
<body>
|
||||
<trans-unit id="dzZWfU1" resname="timesheet.pdf.twig" xml:space="preserve" approved="yes">
|
||||
<source>Timesheet</source>
|
||||
<target state="final">工時單</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -430,8 +430,8 @@
|
||||
<source>invoices</source>
|
||||
<target>الفواتير</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>طباعة</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -794,8 +794,8 @@
|
||||
<source>agendaDay</source>
|
||||
<target>يوم</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="EJDS9HY" resname="vat_id">
|
||||
@@ -838,16 +838,16 @@
|
||||
<source>default_value_new</source>
|
||||
<target>القيم الافتراضية للإدخالات الجديدة</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8BPmHPa" resname="batch_meta_fields">
|
||||
@@ -1966,6 +1966,10 @@
|
||||
<source>Code</source>
|
||||
<target state="translated">الرمز</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>ورقة التوقيت</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1026,24 +1026,24 @@
|
||||
<source>preview</source>
|
||||
<target state="translated">Преглед</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" xml:space="preserve">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" xml:space="preserve">
|
||||
<source>print</source>
|
||||
<target state="translated">Печат</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv" xml:space="preserve">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv" xml:space="preserve">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx" xml:space="preserve">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx" xml:space="preserve">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf" xml:space="preserve">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf" xml:space="preserve">
|
||||
<source>pdf</source>
|
||||
<target state="translated">Pdf</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods" xml:space="preserve">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods" xml:space="preserve">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print" xml:space="preserve">
|
||||
@@ -1966,6 +1966,10 @@
|
||||
<source>time_off.intro</source>
|
||||
<target state="translated">Вашата сметка за работно време има баланс от %hours% часа.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Работно време</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1094,20 +1094,20 @@
|
||||
<source>preview</source>
|
||||
<target state="translated">Previsualització</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" xml:space="preserve">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" xml:space="preserve">
|
||||
<source>print</source>
|
||||
<target state="translated">Imprimeix</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv" xml:space="preserve">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv" xml:space="preserve">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf" xml:space="preserve">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf" xml:space="preserve">
|
||||
<source>pdf</source>
|
||||
<target state="translated">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx" xml:space="preserve">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx" xml:space="preserve">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print" xml:space="preserve">
|
||||
@@ -1186,8 +1186,8 @@
|
||||
<source>invoice.service_date</source>
|
||||
<target state="translated">Data de servei</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods" xml:space="preserve">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods" xml:space="preserve">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="BAkWQqr" resname="total_rate" xml:space="preserve">
|
||||
@@ -2066,6 +2066,10 @@
|
||||
<source>tax.note.reverse_charge</source>
|
||||
<target state="translated">Impost a pagar en règim d’inversió del subjecte passiu</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Registre d'hores</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -530,24 +530,24 @@
|
||||
<source>invoices</source>
|
||||
<target>Faktura</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Tisk</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1938,6 +1938,10 @@
|
||||
<source>unlock_month.help</source>
|
||||
<target state="translated">Toto odemkne všechny dny v roce po zvoleném datu.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Pracovní výkaz</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -594,24 +594,24 @@
|
||||
<source>preview</source>
|
||||
<target>Forhåndsvisning</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" xml:space="preserve">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" xml:space="preserve">
|
||||
<source>print</source>
|
||||
<target state="translated">Udskriv</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1954,6 +1954,10 @@
|
||||
<source>sending_company</source>
|
||||
<target state="needs-translation">Fakturaafsender</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Timeoverblik</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1086,24 +1086,24 @@
|
||||
<source>preview</source>
|
||||
<target>Vorschau</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Drucken</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2066,6 +2066,14 @@
|
||||
<source>tax.note.reverse_charge</source>
|
||||
<target>Steuer zahlbar auf Reverse-Charge-Basis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>Stundennachweis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6w8kS.m" resname="user_access_all">
|
||||
<source>user_access_all</source>
|
||||
<target>Zugriff für alle Benutzer erlauben</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -238,24 +238,24 @@
|
||||
<source>invoice_print</source>
|
||||
<target>Rechnung</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Drucken</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="WXXPG7p" resname="preview">
|
||||
@@ -1966,6 +1966,10 @@
|
||||
<source>Code</source>
|
||||
<target state="translated">Code</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Stundenzettel</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -734,24 +734,24 @@
|
||||
<source>preview</source>
|
||||
<target>Προ-επισκόπηση</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Εκτύπωση</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1954,6 +1954,10 @@
|
||||
<source>Postcode</source>
|
||||
<target state="translated">ZIP / Ταχυδρομικός κώδικας</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>Χρονοδιάγραμμα</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1086,24 +1086,24 @@
|
||||
<source>preview</source>
|
||||
<target>Preview</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Print</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2066,6 +2066,14 @@
|
||||
<source>tax.note.reverse_charge</source>
|
||||
<target>Tax to be paid on reverse charge basis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>Timesheet</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6w8kS.m" resname="user_access_all">
|
||||
<source>user_access_all</source>
|
||||
<target>Allow access for all users</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -638,24 +638,24 @@
|
||||
<source>preview</source>
|
||||
<target>Antaŭrigardo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Printi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
|
||||
@@ -570,24 +570,24 @@
|
||||
<source>preview</source>
|
||||
<target>Previsualizar</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Imprimir</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1990,6 +1990,10 @@
|
||||
<source>electronic_invoice</source>
|
||||
<target state="translated">Factura electrónica</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Parte de horas</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -606,24 +606,24 @@
|
||||
<source>preview</source>
|
||||
<target>Aurrebista</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Inprimatu</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
|
||||
@@ -694,20 +694,20 @@
|
||||
<source>invoices</source>
|
||||
<target state="translated">فاکتورها</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target state="translated">چاپ</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="EO57yXg" resname="invoice.tax">
|
||||
@@ -1034,8 +1034,8 @@
|
||||
<source>ROLE_ADMIN</source>
|
||||
<target state="translated">مدیر</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target state="translated">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2054,6 +2054,10 @@
|
||||
<source>tax.type.standard</source>
|
||||
<target state="translated">مشمول مالیات</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">تایم شیت</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -690,24 +690,24 @@
|
||||
<source>preview</source>
|
||||
<target state="translated">Esikatselu</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target state="translated">Tulosta</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target state="translated">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1954,6 +1954,10 @@
|
||||
<source>Sessions</source>
|
||||
<target state="translated">Istunnot</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Kellokortti</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -314,20 +314,20 @@
|
||||
<source>stats.userTotal</source>
|
||||
<target>Brúkarar</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="N68vyvo" resname="invoice.total">
|
||||
@@ -426,8 +426,8 @@
|
||||
<source>preview</source>
|
||||
<target>Undansýning</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Prenta</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
|
||||
@@ -514,24 +514,24 @@
|
||||
<source>invoices</source>
|
||||
<target>Factures</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Imprimer</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2066,6 +2066,10 @@
|
||||
<source>tax.note.reverse_charge</source>
|
||||
<target state="translated">Impôt à payer sur la base des charges inversées</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>Feuille de temps</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -650,24 +650,24 @@
|
||||
<source>preview</source>
|
||||
<target>תצוגה מקדימה</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>הדפסה</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2046,6 +2046,10 @@
|
||||
<source>electronic_invoice</source>
|
||||
<target state="final">חשבונית דיגיטלית</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>גיליון שעות</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -778,24 +778,24 @@
|
||||
<source>preview</source>
|
||||
<target>Pregled</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Ispiši</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -2066,6 +2066,10 @@
|
||||
<source>tax.type.reverse</source>
|
||||
<target state="translated">Prijenos porezne obveze</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Vremenska tablica</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -514,24 +514,24 @@
|
||||
<source>invoices</source>
|
||||
<target>Számlák</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Nyomtatás</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1890,6 +1890,10 @@
|
||||
<source>Beta</source>
|
||||
<target state="translated">Engedélyez egy előzetes funkciót, ami még fejlesztés alatt áll.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Munkaidő-nyilvántartás</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1126,8 +1126,8 @@
|
||||
<source>invoice_form.title</source>
|
||||
<target state="translated">Buat Faktur</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx" xml:space="preserve">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx" xml:space="preserve">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ohNu8DK" resname="due_days" xml:space="preserve">
|
||||
@@ -1414,8 +1414,8 @@
|
||||
<source>invoices</source>
|
||||
<target state="translated">Faktur</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv" xml:space="preserve">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv" xml:space="preserve">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Uvo1CbP" resname="status.pending" xml:space="preserve">
|
||||
@@ -1494,8 +1494,8 @@
|
||||
<source>Importer</source>
|
||||
<target state="translated">Pengimpor</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods" xml:space="preserve">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods" xml:space="preserve">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="86KyrKO" resname="invoice.subtotal" xml:space="preserve">
|
||||
@@ -1562,12 +1562,12 @@
|
||||
<source>stats.projectTotal</source>
|
||||
<target state="translated">Proyek</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" xml:space="preserve">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" xml:space="preserve">
|
||||
<source>print</source>
|
||||
<target state="translated">Cetak</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf" xml:space="preserve">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf" xml:space="preserve">
|
||||
<source>pdf</source>
|
||||
<target state="translated">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print" xml:space="preserve">
|
||||
@@ -2042,6 +2042,10 @@
|
||||
<source>payment_account_name</source>
|
||||
<target state="translated">Nomor IBAN atau nomor kartu</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Lembar Waktu</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -690,24 +690,24 @@
|
||||
<source>preview</source>
|
||||
<target state="final">Anteprima</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" approved="yes">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" approved="yes">
|
||||
<source>print</source>
|
||||
<target state="final">Stampa</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv" approved="yes">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv" approved="yes">
|
||||
<source>csv</source>
|
||||
<target state="final">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx" approved="yes">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx" approved="yes">
|
||||
<source>xlsx</source>
|
||||
<target state="final">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf" approved="yes">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf" approved="yes">
|
||||
<source>pdf</source>
|
||||
<target state="final">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods" approved="yes">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods" approved="yes">
|
||||
<source>ods</source>
|
||||
<target state="final">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print" approved="yes">
|
||||
@@ -2066,6 +2066,10 @@
|
||||
<source>tax.note.reverse_charge</source>
|
||||
<target state="final">Tassa da pagare in base all'addebito inverso</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" approved="yes">
|
||||
<source>Timesheet</source>
|
||||
<target state="final">Foglio di presenza</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -514,24 +514,24 @@
|
||||
<source>invoices</source>
|
||||
<target>請求書</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>出力</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target>Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -906,6 +906,10 @@
|
||||
<source>Project number</source>
|
||||
<target state="translated">プロジェクト番号</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">タイムシート</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -526,24 +526,24 @@
|
||||
<source>invoices</source>
|
||||
<target state="translated">청구서</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target state="translated">인쇄</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print">
|
||||
@@ -1306,6 +1306,10 @@
|
||||
<source>invoice.cancel</source>
|
||||
<target>청구서 취소</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>근무 시간 기록표</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1086,24 +1086,24 @@
|
||||
<source>preview</source>
|
||||
<target state="translated">Преглед</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print" xml:space="preserve">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print" xml:space="preserve">
|
||||
<source>print</source>
|
||||
<target state="translated">Печати</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv" xml:space="preserve">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv" xml:space="preserve">
|
||||
<source>csv</source>
|
||||
<target state="translated">CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx" xml:space="preserve">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx" xml:space="preserve">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf" xml:space="preserve">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf" xml:space="preserve">
|
||||
<source>pdf</source>
|
||||
<target state="translated">PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods" xml:space="preserve">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods" xml:space="preserve">
|
||||
<source>ods</source>
|
||||
<target state="translated">ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zPcx3O_" resname="invoice_print" xml:space="preserve">
|
||||
@@ -2046,6 +2046,10 @@
|
||||
<source>electronic_invoice</source>
|
||||
<target state="translated">Е-фактура</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet" xml:space="preserve">
|
||||
<source>Timesheet</source>
|
||||
<target state="translated">Временски лист</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -382,24 +382,24 @@
|
||||
<source>preview</source>
|
||||
<target>Forhåndsvisning</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="X70dwP8" resname="button.print">
|
||||
<source>button.print</source>
|
||||
<trans-unit id="zpU6DrC" resname="print">
|
||||
<source>print</source>
|
||||
<target>Skriv ut</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W_TXvSi" resname="button.csv">
|
||||
<source>button.csv</source>
|
||||
<trans-unit id="U7ubCzi" resname="csv">
|
||||
<source>csv</source>
|
||||
<target>CSV</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vC2IsaP" resname="button.xlsx">
|
||||
<source>button.xlsx</source>
|
||||
<trans-unit id="HJgLIry" resname="xlsx">
|
||||
<source>xlsx</source>
|
||||
<target state="translated">Excel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="aAa5uRR" resname="button.pdf">
|
||||
<source>button.pdf</source>
|
||||
<trans-unit id="w1sh1so" resname="pdf">
|
||||
<source>pdf</source>
|
||||
<target>PDF</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ulYFDIo" resname="button.ods">
|
||||
<source>button.ods</source>
|
||||
<trans-unit id="lmUO63g" resname="ods">
|
||||
<source>ods</source>
|
||||
<target>ODS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="XN4PEpj" resname="template">
|
||||
@@ -2042,6 +2042,10 @@
|
||||
<source>electronic_invoice</source>
|
||||
<target state="translated">E-faktura</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lt2Y2LO" resname="timesheet">
|
||||
<source>Timesheet</source>
|
||||
<target>Timeseddel</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user