mirror of
https://github.com/kevinpapst/kimai2.git
synced 2025-03-17 14:32:38 +00:00
added chinese translations (#1310)
This commit is contained in:
parent
d62e1c4468
commit
261b4646e4
34 changed files with 1836 additions and 72 deletions
assets
composer.lockconfig
public/build
src
tests/DependencyInjection
translations
about.zh_CN.xliffactions.zh_CN.xliffdaterangepicker.zh_CN.xliffexceptions.zh_CN.xliffflashmessages.zh_CN.xliffinvoice-calculator.zh_CN.xliffinvoice-numbergenerator.zh_CN.xliffinvoice-renderer.zh_CN.xliffmessages.zh_CN.xliffpagerfanta.zh_CN.xliffplugins.zh_CN.xliffsystem-configuration.zh_CN.xlifftags.zh_CN.xliffteams.zh_CN.xliffvalidators.zh_CN.xliff
|
@ -28,6 +28,7 @@ require('select2/dist/js/i18n/ru');
|
|||
require('select2/dist/js/i18n/sk');
|
||||
require('select2/dist/js/i18n/sv');
|
||||
require('select2/dist/js/i18n/tr');
|
||||
require('select2/dist/js/i18n/zh-CN');
|
||||
|
||||
const Moment = require('moment');
|
||||
global.moment = Moment;
|
||||
|
@ -48,6 +49,7 @@ require('moment/locale/ru');
|
|||
require('moment/locale/sk');
|
||||
require('moment/locale/sv');
|
||||
require('moment/locale/tr');
|
||||
require('moment/locale/zh-cn');
|
||||
|
||||
require('daterangepicker');
|
||||
|
||||
|
|
|
@ -19,5 +19,6 @@ require('fullcalendar/dist/locale/ru');
|
|||
require('fullcalendar/dist/locale/sk');
|
||||
require('fullcalendar/dist/locale/sv');
|
||||
require('fullcalendar/dist/locale/tr');
|
||||
require('fullcalendar/dist/locale/zh-cn');
|
||||
|
||||
require('fullcalendar/dist/fullcalendar.min.css');
|
||||
|
|
|
@ -40,7 +40,7 @@ export default class KimaiLoader {
|
|||
|
||||
constructor(configurations, translations) {
|
||||
// set the current locale for all javascript components
|
||||
moment.locale(configurations['locale']);
|
||||
moment.locale(configurations['locale'].replace('_', '-').toLowerCase());
|
||||
|
||||
const kimai = new KimaiContainer(
|
||||
new KimaiConfiguration(configurations),
|
||||
|
|
|
@ -105,7 +105,7 @@ export default class KimaiFormSelect extends KimaiPlugin {
|
|||
}
|
||||
|
||||
options = {...options, ...{
|
||||
language: this.getContainer().getConfiguration().get('locale'),
|
||||
language: this.getContainer().getConfiguration().get('locale').replace('_', '-'),
|
||||
theme: "bootstrap",
|
||||
matcher: matcher
|
||||
}};
|
||||
|
|
10
composer.lock
generated
10
composer.lock
generated
|
@ -3131,16 +3131,16 @@
|
|||
},
|
||||
{
|
||||
"name": "kevinpapst/adminlte-bundle",
|
||||
"version": "3.0.3",
|
||||
"version": "3.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kevinpapst/AdminLTEBundle.git",
|
||||
"reference": "ecb7ae25bc98f5f3fc7c5f36f06ff76b6782bb4b"
|
||||
"reference": "92adcca485481b0c6b24f725f932cc49eb9e63e4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/kevinpapst/AdminLTEBundle/zipball/ecb7ae25bc98f5f3fc7c5f36f06ff76b6782bb4b",
|
||||
"reference": "ecb7ae25bc98f5f3fc7c5f36f06ff76b6782bb4b",
|
||||
"url": "https://api.github.com/repos/kevinpapst/AdminLTEBundle/zipball/92adcca485481b0c6b24f725f932cc49eb9e63e4",
|
||||
"reference": "92adcca485481b0c6b24f725f932cc49eb9e63e4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3192,7 +3192,7 @@
|
|||
}
|
||||
],
|
||||
"description": "Admin theme bundle for Symfony 4 based on AdminLTE 2.4.8 with FOSUserBundle support",
|
||||
"time": "2019-12-01T22:36:18+00:00"
|
||||
"time": "2019-12-09T09:54:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai2-composer",
|
||||
|
|
|
@ -211,36 +211,26 @@ kimai:
|
|||
# Locale specific settings, like date formats
|
||||
# --------------------------------------------------------------------------------
|
||||
languages:
|
||||
ar:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
date: 'Y-m-d'
|
||||
date_time: 'm-d H:i'
|
||||
duration: '%%h:%%m h'
|
||||
cs:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m H:i'
|
||||
duration: '%%h:%%m h'
|
||||
da:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
de:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
de_CH:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
en:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
|
@ -252,7 +242,6 @@ kimai:
|
|||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
fr:
|
||||
date_time_type: 'dd/MM/yyyy HH:mm'
|
||||
date_type: 'dd/MM/yyyy'
|
||||
|
@ -264,25 +253,11 @@ kimai:
|
|||
date_type: 'yyyy.MM.dd.'
|
||||
date: 'Y.m.d.'
|
||||
date_time: 'm.d. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
it:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
ja:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
date: 'Y-m-d'
|
||||
date_time: 'm-d H:i'
|
||||
duration: '%%h:%%m tim'
|
||||
ko:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
date: 'Y-m-d'
|
||||
date_time: 'm-d H:i'
|
||||
duration: '%%h:%%m h'
|
||||
nl:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
|
@ -294,31 +269,18 @@ kimai:
|
|||
date_type: 'dd-MM-yyyy'
|
||||
date: 'd-m-Y'
|
||||
date_time: 'd-m H:i'
|
||||
duration: '%%h:%%m h'
|
||||
ru:
|
||||
date_time_type: 'dd.MM.yyyy HH:mm'
|
||||
date_type: 'dd.MM.yyyy'
|
||||
date: 'd.m.Y'
|
||||
date_time: 'd.m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
sk:
|
||||
date_time_type: 'dd. MM. yyyy HH:mm'
|
||||
date_type: 'dd. MM. yyyy'
|
||||
date: 'd. m. Y'
|
||||
date_time: 'd. m. H:i'
|
||||
duration: '%%h:%%m h'
|
||||
sv:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
date: 'Y-m-d'
|
||||
date_time: 'm-d H:i'
|
||||
duration: '%%h:%%m tim'
|
||||
tr:
|
||||
date_time_type: 'yyyy-MM-dd HH:mm'
|
||||
date_type: 'yyyy-MM-dd'
|
||||
date: 'Y-m-d'
|
||||
date_time: 'm-d H:i'
|
||||
duration: '%%h:%%m h'
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
|
||||
parameters:
|
||||
locale: en
|
||||
app_locales: ar|cs|de|de_CH|da|en|es|fr|hu|it|ja|ko|nl|pt_BR|ru|sk|sv|tr
|
||||
app_locales: ar|cs|de|de_CH|da|en|es|fr|hu|it|ja|ko|nl|pt_BR|ru|sk|sv|tr|zh_CN
|
||||
|
||||
services:
|
||||
# default configuration for services in *this* file
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
parameters:
|
||||
locale: en
|
||||
app_locales: ar|cs|de|de_CH|da|en|es|fr|hu|it|ja|ko|nl|pt_BR|ru|sk|sv|tr|zh_CN
|
||||
|
||||
services:
|
||||
_defaults:
|
||||
public: true
|
||||
|
|
1
public/build/app.23b99cbb.js
Normal file
1
public/build/app.23b99cbb.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/build/calendar.9e7cdb6a.js
Normal file
1
public/build/calendar.9e7cdb6a.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -5,7 +5,7 @@
|
|||
"build/runtime.6ca1eea5.js",
|
||||
"build/0.1a6ffb43.js",
|
||||
"build/1.16767f92.js",
|
||||
"build/app.e20e5313.js"
|
||||
"build/app.23b99cbb.js"
|
||||
],
|
||||
"css": [
|
||||
"build/app.ce77694e.css"
|
||||
|
@ -24,7 +24,7 @@
|
|||
"build/runtime.6ca1eea5.js",
|
||||
"build/0.1a6ffb43.js",
|
||||
"build/1.16767f92.js",
|
||||
"build/calendar.a5a217f4.js"
|
||||
"build/calendar.9e7cdb6a.js"
|
||||
],
|
||||
"css": [
|
||||
"build/calendar.ade7bcdf.css"
|
||||
|
@ -35,11 +35,11 @@
|
|||
"build/runtime.6ca1eea5.js": "sha384-xNNrNinl64G3nCUrIskgSjU0mUXXCB9lj6XCSInBTwxSKXk8uTMafnLHtdWdIGtd",
|
||||
"build/0.1a6ffb43.js": "sha384-vuVCyLVj2b4h3jpKl+JSANRCacmXeLk+ihK5T5NZBO7+SJ5Y+o6d4qju116hTPSD",
|
||||
"build/1.16767f92.js": "sha384-JPoKdrVtBemSiVBoAnmSxLML7xXM9zYeuwOPYQv/kLzt/P4cmLY5r9gH8oaGRPFG",
|
||||
"build/app.e20e5313.js": "sha384-1PclE77S5F9LtHCZjMABLamE9yPOR3w0+6GohN4bH3Ml6mM0DpcnSwoG6ik7b5DQ",
|
||||
"build/app.23b99cbb.js": "sha384-OcCvUr52EqOwqv3QvQVwP6y4AOv3JRpxwp629Df5QnPAkZqHzX5NwbaZJQZ0Xzfl",
|
||||
"build/app.ce77694e.css": "sha384-xUdH11jkeXQ1YfJ66YW+tlcQt23/PKuPZmMi4XJuVuMLdonUk0qKAJ0HJrRL5hvf",
|
||||
"build/2.dad56560.js": "sha384-oKsefSmRq0GL+Qa6f6jExXvFay3cM6YZFHQRKoAHi2p54UOCtjJfjF2eAB1qykoL",
|
||||
"build/chart.7f4d7f29.js": "sha384-I57c9DtU3AOG2kzKqIZkIu0hi1aGYHRZ5QG4LKC9+9slzJnAMttPGXoL2cQG3m6y",
|
||||
"build/calendar.a5a217f4.js": "sha384-qAUUODRKt547V7Y+IKTJpXjdEtqkzpnunFeSsarxKfhivglgiEev9rIEMLugTOm0",
|
||||
"build/calendar.9e7cdb6a.js": "sha384-RvFQJC1YvKq9BqRDObc5REPbi9ZiG5/fkqKP1xLJUlFDb2b8WqTR/f4F+hdE9cI1",
|
||||
"build/calendar.ade7bcdf.css": "sha384-ta519W5+NY1a8FBh7rD4zORYTfUXCYTLci0Z25nf4BfodmuXqyPVNEe7dSe2/fRd"
|
||||
}
|
||||
}
|
|
@ -3,9 +3,9 @@
|
|||
"build/1.16767f92.js": "build/1.16767f92.js",
|
||||
"build/2.dad56560.js": "build/2.dad56560.js",
|
||||
"build/app.css": "build/app.ce77694e.css",
|
||||
"build/app.js": "build/app.e20e5313.js",
|
||||
"build/app.js": "build/app.23b99cbb.js",
|
||||
"build/calendar.css": "build/calendar.ade7bcdf.css",
|
||||
"build/calendar.js": "build/calendar.a5a217f4.js",
|
||||
"build/calendar.js": "build/calendar.9e7cdb6a.js",
|
||||
"build/chart.js": "build/chart.7f4d7f29.js",
|
||||
"build/runtime.js": "build/runtime.6ca1eea5.js",
|
||||
"build/fonts/fa-brands-400.eot": "build/fonts/fa-brands-400.8e49b728.eot",
|
||||
|
|
|
@ -11,20 +11,17 @@ namespace App\Configuration;
|
|||
|
||||
use App\Utils\MomentFormatConverter;
|
||||
|
||||
class LanguageFormattings
|
||||
final class LanguageFormattings
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $settings;
|
||||
private $settings;
|
||||
/**
|
||||
* @var MomentFormatConverter
|
||||
*/
|
||||
protected $momentFormatter;
|
||||
private $momentFormatter;
|
||||
|
||||
/**
|
||||
* @param array $languageSettings
|
||||
*/
|
||||
public function __construct(array $languageSettings)
|
||||
{
|
||||
$this->settings = $languageSettings;
|
||||
|
@ -145,7 +142,7 @@ class LanguageFormattings
|
|||
* @param string $locale
|
||||
* @return string
|
||||
*/
|
||||
protected function getConfig(string $key, string $locale): string
|
||||
private function getConfig(string $key, string $locale): string
|
||||
{
|
||||
if (!isset($this->settings[$locale])) {
|
||||
throw new \InvalidArgumentException(sprintf('Unknown locale given: %s', $locale));
|
||||
|
|
|
@ -38,4 +38,8 @@ class Constants
|
|||
* Homepage, used in multiple views
|
||||
*/
|
||||
public const HOMEPAGE = 'https://www.kimai.org';
|
||||
/**
|
||||
* Application wide default locale.
|
||||
*/
|
||||
public const DEFAULT_LOCALE = 'en';
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
namespace App\DependencyInjection;
|
||||
|
||||
use App\Constants;
|
||||
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||
|
@ -52,7 +53,9 @@ class AppExtension extends Extension
|
|||
$container->setParameter('kimai.data_dir', $config['data_dir']);
|
||||
$container->setParameter('kimai.plugin_dir', $config['plugin_dir']);
|
||||
|
||||
$container->setParameter('kimai.languages', $config['languages']);
|
||||
$this->setLanguageFormats($config['languages'], $container);
|
||||
unset($config['languages']);
|
||||
|
||||
$container->setParameter('kimai.calendar', $config['calendar']);
|
||||
$container->setParameter('kimai.dashboard', $config['dashboard']);
|
||||
$container->setParameter('kimai.widgets', $config['widgets']);
|
||||
|
@ -96,6 +99,29 @@ class AppExtension extends Extension
|
|||
$container->setParameter('kimai.config', $config);
|
||||
}
|
||||
|
||||
protected function setLanguageFormats(array $config, ContainerBuilder $container)
|
||||
{
|
||||
$locales = explode('|', $container->getParameter('app_locales'));
|
||||
|
||||
// make sure all allowed locales are registered
|
||||
foreach ($locales as $locale) {
|
||||
if (!array_key_exists($locale, $config)) {
|
||||
$config[$locale] = $config[Constants::DEFAULT_LOCALE];
|
||||
}
|
||||
}
|
||||
|
||||
// make sure all keys are registered for every locale
|
||||
foreach ($config as $locale => $settings) {
|
||||
if ($locale === Constants::DEFAULT_LOCALE) {
|
||||
continue;
|
||||
}
|
||||
// pre-fill all formats with the default locale settings
|
||||
$config[$locale] = array_merge($config[Constants::DEFAULT_LOCALE], $config[$locale]);
|
||||
}
|
||||
|
||||
$container->setParameter('kimai.languages', $config);
|
||||
}
|
||||
|
||||
protected function setLdapParameter(array $config, ContainerBuilder $container)
|
||||
{
|
||||
if (!isset($config['connection']['baseDn'])) {
|
||||
|
|
|
@ -10,30 +10,26 @@
|
|||
namespace App\Utils;
|
||||
|
||||
use App\Configuration\LanguageFormattings;
|
||||
use App\Constants;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
|
||||
/**
|
||||
* Use this class, when you want information about formats for the "current request locale".
|
||||
*/
|
||||
class LocaleSettings
|
||||
final class LocaleSettings
|
||||
{
|
||||
/**
|
||||
* @var LanguageFormattings
|
||||
*/
|
||||
protected $formats;
|
||||
|
||||
private $formats;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $locale = 'en';
|
||||
private $locale = Constants::DEFAULT_LOCALE;
|
||||
|
||||
/**
|
||||
* @param RequestStack $requestStack
|
||||
* @param LanguageFormattings $formats
|
||||
*/
|
||||
public function __construct(RequestStack $requestStack, LanguageFormattings $formats)
|
||||
{
|
||||
// It can be null in a console command
|
||||
// request is null in a console command
|
||||
if (null !== $requestStack->getMasterRequest()) {
|
||||
$this->locale = $requestStack->getMasterRequest()->getLocale();
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ class AppExtensionTest extends TestCase
|
|||
private function getContainer()
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->setParameter('app_locales', 'de|en|tr|zh_CN');
|
||||
|
||||
return $container;
|
||||
}
|
||||
|
@ -44,6 +45,15 @@ class AppExtensionTest extends TestCase
|
|||
{
|
||||
return [
|
||||
'kimai' => [
|
||||
'languages' => [
|
||||
'en' => [
|
||||
'date_type' => 'dd. MM. yyyy',
|
||||
'date' => 'A-m-d'
|
||||
],
|
||||
'tr' => [
|
||||
'date' => 'X-m-d'
|
||||
],
|
||||
],
|
||||
'data_dir' => '/tmp/',
|
||||
'plugin_dir' => '/tmp/',
|
||||
'timesheet' => [],
|
||||
|
@ -60,7 +70,46 @@ class AppExtensionTest extends TestCase
|
|||
$expected = [
|
||||
'kimai.data_dir' => '/tmp/',
|
||||
'kimai.plugin_dir' => '/tmp/',
|
||||
'kimai.languages' => [],
|
||||
'kimai.languages' => [
|
||||
'en' => [
|
||||
'date_time_type' => 'yyyy-MM-dd HH:mm',
|
||||
'date_type' => 'dd. MM. yyyy',
|
||||
'date' => 'A-m-d',
|
||||
'date_time' => 'm-d H:i',
|
||||
'duration' => '%%h:%%m h',
|
||||
'time' => 'H:i',
|
||||
'24_hours' => true,
|
||||
],
|
||||
'de' => [
|
||||
'date_time_type' => 'yyyy-MM-dd HH:mm',
|
||||
'date_type' => 'dd. MM. yyyy',
|
||||
'date' => 'A-m-d',
|
||||
'date_time' => 'm-d H:i',
|
||||
'duration' => '%%h:%%m h',
|
||||
'time' => 'H:i',
|
||||
'24_hours' => true,
|
||||
],
|
||||
'tr' => [
|
||||
'date_time_type' => 'yyyy-MM-dd HH:mm',
|
||||
// this value if pre-filled by the Configuration object, as "tr" is defined in the min config
|
||||
// and the other languages (not defined in min config) are "only" copied during runtime from "en"
|
||||
'date_type' => 'yyyy-MM-dd',
|
||||
'date' => 'X-m-d',
|
||||
'date_time' => 'm-d H:i',
|
||||
'duration' => '%%h:%%m h',
|
||||
'time' => 'H:i',
|
||||
'24_hours' => true,
|
||||
],
|
||||
'zh_CN' => [
|
||||
'date_time_type' => 'yyyy-MM-dd HH:mm',
|
||||
'date_type' => 'dd. MM. yyyy',
|
||||
'date' => 'A-m-d',
|
||||
'date_time' => 'm-d H:i',
|
||||
'duration' => '%%h:%%m h',
|
||||
'time' => 'H:i',
|
||||
'24_hours' => true,
|
||||
],
|
||||
],
|
||||
'kimai.calendar' => [
|
||||
'week_numbers' => true,
|
||||
'day_limit' => 4,
|
||||
|
|
43
translations/about.zh_CN.xliff
Normal file
43
translations/about.zh_CN.xliff
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="about.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="about.title">
|
||||
<source>about.title</source>
|
||||
<target>关于Kimai</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="support">
|
||||
<source>support</source>
|
||||
<target>支持</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="website">
|
||||
<source>website</source>
|
||||
<target>主页</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="help">
|
||||
<source>help</source>
|
||||
<target>文件</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tab.thanks">
|
||||
<source>tab.thanks</source>
|
||||
<target>特别鸣谢</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="donate">
|
||||
<source>donate</source>
|
||||
<target>为Kimai的未来捐款</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="published_under">
|
||||
<source>published_under</source>
|
||||
<target>%kimai% 能够发布是因为</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="special_thanks">
|
||||
<source>special_thanks</source>
|
||||
<target>特别鸣谢 …</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="library_authors">
|
||||
<source>library_authors</source>
|
||||
<target>… 这些软件库里的作者们,如果没有你们,Kimai不可能建成 👍</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
79
translations/actions.zh_CN.xliff
Normal file
79
translations/actions.zh_CN.xliff
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="none">
|
||||
<body>
|
||||
<trans-unit id="stop">
|
||||
<source>stop</source>
|
||||
<target>停止</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="back">
|
||||
<source>back</source>
|
||||
<target>返回</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="edit">
|
||||
<source>edit</source>
|
||||
<target>编辑</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="trash">
|
||||
<source>trash</source>
|
||||
<target>删除</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="report">
|
||||
<source>report</source>
|
||||
<target>报告</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="repeat">
|
||||
<source>repeat</source>
|
||||
<target>再次开始</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile-stats">
|
||||
<source>profile-stats</source>
|
||||
<target>个人资料</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="settings">
|
||||
<source>settings</source>
|
||||
<target>参数选择</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet">
|
||||
<source>timesheet</source>
|
||||
<target>时间表</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="customer">
|
||||
<source>customer</source>
|
||||
<target>筛选用户</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="project">
|
||||
<source>project</source>
|
||||
<target>筛选项目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="activity">
|
||||
<source>activity</source>
|
||||
<target>筛选活动</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="copy">
|
||||
<source>copy</source>
|
||||
<target>创建复制</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="home">
|
||||
<source>home</source>
|
||||
<target>主页</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="create-project">
|
||||
<source>create-project</source>
|
||||
<target>创建项目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="create-activity">
|
||||
<source>create-activity</source>
|
||||
<target>创建活动</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="create-timesheet">
|
||||
<source>create-timesheet</source>
|
||||
<target>创建时间表</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="permissions">
|
||||
<source>permissions</source>
|
||||
<target>团队批准</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
43
translations/daterangepicker.zh_CN.xliff
Normal file
43
translations/daterangepicker.zh_CN.xliff
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="daterangepicker.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="daterangepicker.today">
|
||||
<source>daterangepicker.today</source>
|
||||
<target>今天</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.yesterday">
|
||||
<source>daterangepicker.yesterday</source>
|
||||
<target>昨天</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.lastWeek">
|
||||
<source>daterangepicker.lastWeek</source>
|
||||
<target>上周</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.thisWeek">
|
||||
<source>daterangepicker.thisWeek</source>
|
||||
<target>本周</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.lastMonth">
|
||||
<source>daterangepicker.lastMonth</source>
|
||||
<target>上月</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.thisMonth">
|
||||
<source>daterangepicker.thisMonth</source>
|
||||
<target>本月</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.lastYear">
|
||||
<source>daterangepicker.lastYear</source>
|
||||
<target>去年</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.thisYear">
|
||||
<source>daterangepicker.thisYear</source>
|
||||
<target>今年</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="daterangepicker.customRange">
|
||||
<source>daterangepicker.customRange</source>
|
||||
<target>自定义范围</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
48
translations/exceptions.zh_CN.xliff
Normal file
48
translations/exceptions.zh_CN.xliff
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="exceptions.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="access.denied">
|
||||
<source>access.denied</source>
|
||||
<target>拒绝访问</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="stacktrace">
|
||||
<source>stacktrace</source>
|
||||
<target>此处出现问题</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error.title">
|
||||
<source>http_error.title</source>
|
||||
<target>错误</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error.description">
|
||||
<source>http_error.description</source>
|
||||
<target>未知问题</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error.suggestion">
|
||||
<source>http_error.suggestion</source>
|
||||
<target>
|
||||
出现严重错误,请重试。可能出现软件问题,若无法解决,请联系管理员。
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error_404.description">
|
||||
<source>http_error_404.description</source>
|
||||
<target>无法找到该页</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error_404.suggestion">
|
||||
<source>http_error_404.suggestion</source>
|
||||
<target>
|
||||
无法找到该页。请返回控制主页并重新开始。
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error_403.description">
|
||||
<source>http_error_403.description</source>
|
||||
<target>页面受限</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="http_error_403.suggestion">
|
||||
<source>http_error_403.suggestion</source>
|
||||
<target>抱歉您没有权限访问该页。如有疑问请联系管理员。
|
||||
</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
55
translations/flashmessages.zh_CN.xliff
Normal file
55
translations/flashmessages.zh_CN.xliff
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="flashmessages.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="warning">
|
||||
<source>warning</source>
|
||||
<target>警告</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.stop.success">
|
||||
<source>timesheet.stop.success</source>
|
||||
<target>时间记录终止</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.stop.error">
|
||||
<source>timesheet.stop.error</source>
|
||||
<target>无法终止时间记录</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.start.success">
|
||||
<source>timesheet.start.success</source>
|
||||
<target>时间记录开始</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.start.error">
|
||||
<source>timesheet.start.error</source>
|
||||
<target>时间记录无法开始</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.start.exceeded_limit">
|
||||
<source>timesheet.start.exceeded_limit</source>
|
||||
<target>活动时间记录已达到限制,请先停止至少一次运行时间测量</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet.locked.warning">
|
||||
<source>timesheet.locked.warning</source>
|
||||
<target>您正在编辑导出的记录</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="action.update.success">
|
||||
<source>action.update.success</source>
|
||||
<target>保存更改</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="action.update.error">
|
||||
<source>action.update.error</source>
|
||||
<target>更改无法保存: %reason%</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="action.delete.success">
|
||||
<source>action.delete.success</source>
|
||||
<target>条目已被删除</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="action.delete.error">
|
||||
<source>action.delete.error</source>
|
||||
<target>无法删除条目: %reason%</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="invoice.first_template">
|
||||
<source>invoice.first_template</source>
|
||||
<target>您必须先创立一个自己的发票模板</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
35
translations/invoice-calculator.zh_CN.xliff
Normal file
35
translations/invoice-calculator.zh_CN.xliff
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="invoice-calculator.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="label.invoice_calculator">
|
||||
<source>label.invoice_calculator</source>
|
||||
<target>总和计算</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="default">
|
||||
<source>default</source>
|
||||
<target>默认:每次记录一个条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="short">
|
||||
<source>short</source>
|
||||
<target>时间:记录总和,只有一个条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="user">
|
||||
<source>user</source>
|
||||
<target>用户:每个用户一个条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="activity">
|
||||
<source>activity</source>
|
||||
<target>活动:每次活动一个条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="project">
|
||||
<source>project</source>
|
||||
<target>项目:每个项目一个条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="date">
|
||||
<source>date</source>
|
||||
<target>日期:每天一个条目(用户开始日期)</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
15
translations/invoice-numbergenerator.zh_CN.xliff
Normal file
15
translations/invoice-numbergenerator.zh_CN.xliff
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="invoice-numbergenerator.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="label.invoice_number_generator">
|
||||
<source>label.invoice_number_generator</source>
|
||||
<target>发票数字生成器</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="default">
|
||||
<source>default</source>
|
||||
<target>日期(默认)</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
39
translations/invoice-renderer.zh_CN.xliff
Normal file
39
translations/invoice-renderer.zh_CN.xliff
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="invoice-renderer.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="label.invoice_renderer">
|
||||
<source>label.invoice_renderer</source>
|
||||
<target>发票文件</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="default">
|
||||
<source>default</source>
|
||||
<target>发票(默认)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet">
|
||||
<source>timesheet</source>
|
||||
<target>时间表</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="freelancer">
|
||||
<source>freelancer</source>
|
||||
<target>兼职人员</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="open-spreadsheet">
|
||||
<source>open-spreadsheet</source>
|
||||
<target>电子表格</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="spreadsheet">
|
||||
<source>spreadsheet</source>
|
||||
<target>Excel表格</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="export">
|
||||
<source>export</source>
|
||||
<target>数据输出</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="company">
|
||||
<source>company</source>
|
||||
<target>公司发票</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
1084
translations/messages.zh_CN.xliff
Normal file
1084
translations/messages.zh_CN.xliff
Normal file
File diff suppressed because it is too large
Load diff
15
translations/pagerfanta.zh_CN.xliff
Normal file
15
translations/pagerfanta.zh_CN.xliff
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="pagerfanta.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="previous">
|
||||
<source>previous</source>
|
||||
<target>以前</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="next">
|
||||
<source>next</source>
|
||||
<target>下</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
23
translations/plugins.zh_CN.xliff
Normal file
23
translations/plugins.zh_CN.xliff
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="plugins.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="plugins.title">
|
||||
<source>plugins.title</source>
|
||||
<target>插件</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="plugins.subtitle">
|
||||
<source>plugins.subtitle</source>
|
||||
<target>您可以通过安装插件以提升Kimai的性能。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="plugin.none_installed">
|
||||
<source>plugin.none_installed</source>
|
||||
<target>您尚未安装插件。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="plugin.marketplace">
|
||||
<source>plugin.marketplace</source>
|
||||
<target>Kimai市场</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
195
translations/system-configuration.zh_CN.xliff
Normal file
195
translations/system-configuration.zh_CN.xliff
Normal file
|
@ -0,0 +1,195 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="system-configuration.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="title">
|
||||
<source>title</source>
|
||||
<target>设置</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="subtitle">
|
||||
<source>subtitle</source>
|
||||
<target>修改您的时间追踪器的全球设置</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="timesheet">
|
||||
<source>timesheet</source>
|
||||
<target>时间表</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="form_customer">
|
||||
<source>form_customer</source>
|
||||
<target>创建客户-默认值</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="form_user">
|
||||
<source>form_user</source>
|
||||
<target>用户—默认值</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="theme">
|
||||
<source>theme</source>
|
||||
<target>主题</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="calendar">
|
||||
<source>calendar</source>
|
||||
<target>日历</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.markdown_content">
|
||||
<source>label.theme.markdown_content</source>
|
||||
<target>在描述区和评论区允许更改格式。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.mode">
|
||||
<source>label.timesheet.mode</source>
|
||||
<target>时间追踪模式</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.mode_default">
|
||||
<source>label.timesheet.mode_default</source>
|
||||
<target>[默认] 开始时间和结束时间可编辑</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.mode_duration_only">
|
||||
<source>label.timesheet.mode_duration_only</source>
|
||||
<target>[持续时间]用持续时间输入栏代替结束时间</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.mode_duration_fixed_begin">
|
||||
<source>label.timesheet.mode_duration_fixed_begin</source>
|
||||
<target>[持续时间] 可配置的固定开始时间,只有持续时间可以更改</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.mode_punch">
|
||||
<source>label.timesheet.mode_punch</source>
|
||||
<target>[打卡钟] 用户可以开始或停止记录,但是不能编辑时间或持续时间</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rules.allow_future_times">
|
||||
<source>label.timesheet.rules.allow_future_times</source>
|
||||
<target>在未来允许时间条目</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.active_entries.hard_limit">
|
||||
<source>label.timesheet.active_entries.hard_limit</source>
|
||||
<target>允许可同时运行的时间条目数量</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.active_entries.soft_limit">
|
||||
<source>label.timesheet.active_entries.soft_limit</source>
|
||||
<target>展示警告信息的运行时间条目数量</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.select_type">
|
||||
<source>label.theme.select_type</source>
|
||||
<target>表格中筛选框的类型</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.autocomplete_chars">
|
||||
<source>label.theme.autocomplete_chars</source>
|
||||
<target>开启自动完成需达到的最少字母数</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.week_numbers">
|
||||
<source>label.calendar.week_numbers</source>
|
||||
<target>显示周数字</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.weekends">
|
||||
<source>label.calendar.weekends</source>
|
||||
<target>显示周末</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.businessHours.begin">
|
||||
<source>label.calendar.businessHours.begin</source>
|
||||
<target>正常工作时间的开始时间(将被高亮)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.businessHours.end">
|
||||
<source>label.calendar.businessHours.end</source>
|
||||
<target>正常工作时间的结束时间(将被高亮)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.visibleHours.begin">
|
||||
<source>label.calendar.visibleHours.begin</source>
|
||||
<target>可见时间范围的开始时间</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.visibleHours.end">
|
||||
<source>label.calendar.visibleHours.end</source>
|
||||
<target>可见时间范围的结束时间</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.calendar.slot_duration">
|
||||
<source>label.calendar.slot_duration</source>
|
||||
<target>周和日查看的空隙持续时间(格式:时:分:秒)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="branding">
|
||||
<source>branding</source>
|
||||
<target>品牌</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.branding.logo">
|
||||
<source>label.theme.branding.logo</source>
|
||||
<target>标识 (图片链接,在登录界面替换公司)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.branding.company">
|
||||
<source>label.theme.branding.company</source>
|
||||
<target>公司</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.branding.mini">
|
||||
<source>label.theme.branding.mini</source>
|
||||
<target>小标识(折叠侧面菜单)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.theme.branding.title">
|
||||
<source>label.theme.branding.title</source>
|
||||
<target>浏览器名称</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rounding">
|
||||
<source>rounding</source>
|
||||
<target>时间取整</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rounding.default.begin">
|
||||
<source>label.timesheet.rounding.default.begin</source>
|
||||
<target>开始时间以分钟取整 (0 = 不活跃)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rounding.default.end">
|
||||
<source>label.timesheet.rounding.default.end</source>
|
||||
<target>结束时间以分钟取整 (0 = 不活跃)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rounding.default.duration">
|
||||
<source>label.timesheet.rounding.default.duration</source>
|
||||
<target>持续时间以分钟取整 (0 = 不活跃)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rounding.default.mode">
|
||||
<source>label.timesheet.rounding.default.mode</source>
|
||||
<target>取整模式</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="label.timesheet.rounding.default.days">
|
||||
<source>label.timesheet.rounding.default.days</source>
|
||||
<target>取整模式适用时一周工作天数</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Monday">
|
||||
<source>Monday</source>
|
||||
<target>周一</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Tuesday">
|
||||
<source>Tuesday</source>
|
||||
<target>周二</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Wednesday">
|
||||
<source>Wednesday</source>
|
||||
<target>周三</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Thursday">
|
||||
<source>Thursday</source>
|
||||
<target>周四</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Friday">
|
||||
<source>Friday</source>
|
||||
<target>周五</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Saturday">
|
||||
<source>Saturday</source>
|
||||
<target>周六</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sunday">
|
||||
<source>Sunday</source>
|
||||
<target>周日</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Ceil">
|
||||
<source>Ceil</source>
|
||||
<target>进一取整法: 开始时间, 结束时间以及持续时间都将取整处理</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Closest">
|
||||
<source>Closest</source>
|
||||
<target>最近值: 数学取整至最近值</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Default">
|
||||
<source>Default</source>
|
||||
<target>标准:开始时间会向下取整,结束时间和持续时间会向上取整</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Floor">
|
||||
<source>Floor</source>
|
||||
<target>Floor: 开始时间,结束时间和持续时间会向下取整</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
11
translations/tags.zh_CN.xliff
Normal file
11
translations/tags.zh_CN.xliff
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="tags.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="tags.title">
|
||||
<source>tags.title</source>
|
||||
<target>标签</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
19
translations/teams.zh_CN.xliff
Normal file
19
translations/teams.zh_CN.xliff
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="teams.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="teams.title">
|
||||
<source>teams.title</source>
|
||||
<target>团队</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="teams.project_access">
|
||||
<source>teams.project_access</source>
|
||||
<target>授予访问项目权限</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="teams.customer_access">
|
||||
<source>teams.customer_access</source>
|
||||
<target>授予访问客户权限</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
19
translations/validators.zh_CN.xliff
Normal file
19
translations/validators.zh_CN.xliff
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="zh-CN" datatype="plaintext" original="validators.en.xliff">
|
||||
<body>
|
||||
<trans-unit id="This value is not a valid role.">
|
||||
<source>This value is not a valid role.</source>
|
||||
<target>此值不是有效角色。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="End date must not be earlier then start date.">
|
||||
<source>End date must not be earlier then start date.</source>
|
||||
<target>结束日期必须早于开始日期。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="The begin date cannot be in the future.">
|
||||
<source>The begin date cannot be in the future.</source>
|
||||
<target>开始日期不能是未来的某一日期。</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
Loading…
Reference in a new issue