chore(i18n): add unused translation scanner and remove orphaned keys

Add tools to detect and clean up unused translation keys:
- find-unused-translations.js: scans for T.* and string literal patterns
- cleanup-unused-translations.js: removes specified orphaned sections

Remove 34 orphaned translation keys from all 25 language files:
- ANDROID.* (5 keys) - code removed in previous commits
- THEMES.* (17 keys) - never used, themes use hardcoded names
- F.CALDAV.ISSUE_CONTENT.* (12 keys) - never wired up

Convert string literal translation keys to T.* pattern in:
- dialog-user-profile-management component
- user-profile-button component
- plugin-management component
- config-sound-form component
- lazy-chart component
This commit is contained in:
Johannes Millan 2026-01-08 14:20:14 +01:00
parent dec0d4ec33
commit 12d315a703
37 changed files with 377 additions and 1306 deletions

View file

@ -71,6 +71,7 @@
"int:clean": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json --clean --sort --format namespaced-json --marker _",
"int:find": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json --sort --format namespaced-json --marker _",
"int:test": "node ./tools/test-lng-files.js",
"int:unused": "node ./tools/find-unused-translations.js",
"int:watch": "node ./tools/extract-i18n-watch.js",
"lint": "npm run lint:ts && npm run lint:scss",
"lint:ts": "ng lint",

View file

@ -9,7 +9,7 @@
class="width100"
[hideRequiredMarker]="true"
>
<mat-label>{{ 'GCF.SOUND.VOLUME' | translate }}</mat-label>
<mat-label>{{ T.GCF.SOUND.VOLUME | translate }}</mat-label>
<mat-slider
class="width100"
[min]="0"
@ -26,7 +26,7 @@
</mat-slider>
</mat-form-field>
<mat-form-field class="width100">
<mat-label>{{ 'GCF.SOUND.DONE_SOUND' | translate }}</mat-label>
<mat-label>{{ T.GCF.SOUND.DONE_SOUND | translate }}</mat-label>
<mat-select formControlName="doneSound">
@for (sound of soundOpts; track sound) {
<mat-option [value]="sound.value">{{ sound.label }}</mat-option>
@ -42,11 +42,11 @@
matInput
[checked]="this.config?.isIncreaseDoneSoundPitch"
formControlName="isIncreaseDoneSoundPitch"
>{{ 'GCF.SOUND.IS_INCREASE_DONE_PITCH' | translate }}</mat-slide-toggle
>{{ T.GCF.SOUND.IS_INCREASE_DONE_PITCH | translate }}</mat-slide-toggle
>
</mat-form-field>
<mat-form-field class="width100">
<mat-label>{{ 'GCF.SOUND.BREAK_REMINDER_SOUND' | translate }}</mat-label>
<mat-label>{{ T.GCF.SOUND.BREAK_REMINDER_SOUND | translate }}</mat-label>
<mat-select formControlName="breakReminderSound">
@for (sound of soundOpts; track sound) {
<mat-option [value]="sound.value">{{ sound.label }}</mat-option>
@ -54,7 +54,7 @@
</mat-select>
</mat-form-field>
<mat-form-field class="width100">
<mat-label>{{ 'GCF.SOUND.TRACK_TIME_SOUND' | translate }}</mat-label>
<mat-label>{{ T.GCF.SOUND.TRACK_TIME_SOUND | translate }}</mat-label>
<mat-select formControlName="trackTimeSound">
@for (sound of soundOpts; track sound) {
<mat-option [value]="sound.value">{{ sound.label }}</mat-option>

View file

@ -16,6 +16,7 @@ import { MatSelect } from '@angular/material/select';
import { MatOption } from '@angular/material/core';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { TranslatePipe } from '@ngx-translate/core';
import { T } from '../../../t.const';
const sectionKey = 'sound';
@ -62,7 +63,8 @@ export class ConfigSoundFormComponent {
soundOpts = SOUND_OPTS;
config?: SoundConfig;
title = 'GCF.SOUND.TITLE';
title = T.GCF.SOUND.TITLE;
readonly T = T;
private isInitializing = true;
constructor() {

View file

@ -3,13 +3,13 @@
@if (enableTimeframeSelector()) {
<div class="timeframe-selector">
<span class="timeframe-label">
{{ 'F.METRIC.CMP.TIME_FRAME_LABEL' | translate }}
{{ T.F.METRIC.CMP.TIME_FRAME_LABEL | translate }}
</span>
<mat-radio-group
class="timeframe-radios"
[value]="selectedTimeframe()"
(change)="onTimeframeRadioChange($event)"
[attr.aria-label]="'F.METRIC.CMP.TIME_FRAME_LABEL' | translate"
[attr.aria-label]="T.F.METRIC.CMP.TIME_FRAME_LABEL | translate"
>
@for (option of timeframeOptions; track option.id) {
<mat-radio-button [value]="option.id">
@ -26,7 +26,7 @@
type="button"
(click)="shareChart()"
[disabled]="!isModuleLoaded() || isSharing()"
[matTooltip]="'Share Chart' | translate"
[matTooltip]="T.G.SHARE | translate"
>
@if (isSharing()) {
<mat-icon>hourglass_empty</mat-icon>

View file

@ -47,17 +47,17 @@ interface TimeframeOption {
const TIMEFRAME_OPTIONS: ReadonlyArray<TimeframeOption> = [
{
id: 'twoWeeks',
labelKey: 'F.METRIC.CMP.TIME_FRAME_2_WEEKS',
labelKey: T.F.METRIC.CMP.TIME_FRAME_2_WEEKS,
limit: 14,
},
{
id: 'oneMonth',
labelKey: 'F.METRIC.CMP.TIME_FRAME_1_MONTH',
labelKey: T.F.METRIC.CMP.TIME_FRAME_1_MONTH,
limit: 30,
},
{
id: 'max',
labelKey: 'F.METRIC.CMP.TIME_FRAME_MAX',
labelKey: T.F.METRIC.CMP.TIME_FRAME_MAX,
limit: null,
},
];
@ -98,6 +98,7 @@ export class LazyChartComponent implements OnDestroy {
readonly isModuleLoaded = signal(false);
readonly isSharing = signal(false);
readonly timeframeOptions = TIMEFRAME_OPTIONS;
readonly T = T;
readonly selectedTimeframe = signal<LazyChartTimeframe>('max');
private readonly activeTimeframe = computed<LazyChartTimeframe>(() =>

View file

@ -1,17 +1,17 @@
<h2 mat-dialog-title>{{ 'USER_PROFILES.DIALOG_TITLE' | translate }}</h2>
<h2 mat-dialog-title>{{ T.USER_PROFILES.DIALOG_TITLE | translate }}</h2>
<mat-dialog-content>
<!-- Create New Profile -->
<div class="create-profile-section">
<h3>{{ 'USER_PROFILES.CREATE_NEW_PROFILE' | translate }}</h3>
<h3>{{ T.USER_PROFILES.CREATE_NEW_PROFILE | translate }}</h3>
<div class="create-profile-form">
<mat-form-field class="profile-name-input">
<mat-label>{{ 'USER_PROFILES.PROFILE_NAME' | translate }}</mat-label>
<mat-label>{{ T.USER_PROFILES.PROFILE_NAME | translate }}</mat-label>
<input
matInput
[(ngModel)]="newProfileName"
(keydown.enter)="createProfile()"
[placeholder]="'USER_PROFILES.PROFILE_NAME_PLACEHOLDER' | translate"
[placeholder]="T.USER_PROFILES.PROFILE_NAME_PLACEHOLDER | translate"
/>
</mat-form-field>
<button
@ -21,14 +21,14 @@
[disabled]="!newProfileName() || isCreating()"
>
<mat-icon>add</mat-icon>
{{ 'USER_PROFILES.CREATE' | translate }}
{{ T.USER_PROFILES.CREATE | translate }}
</button>
</div>
</div>
<!-- Existing Profiles -->
<div class="profiles-list-section">
<h3>{{ 'USER_PROFILES.EXISTING_PROFILES' | translate }}</h3>
<h3>{{ T.USER_PROFILES.EXISTING_PROFILES | translate }}</h3>
<div class="profiles-list">
@for (profile of profileService.profiles(); track profile.id) {
<div
@ -49,14 +49,14 @@
<button
mat-icon-button
(click)="saveEdit(profile.id)"
[matTooltip]="'USER_PROFILES.SAVE' | translate"
[matTooltip]="T.USER_PROFILES.SAVE | translate"
>
<mat-icon>check</mat-icon>
</button>
<button
mat-icon-button
(click)="cancelEdit()"
[matTooltip]="'USER_PROFILES.CANCEL' | translate"
[matTooltip]="T.USER_PROFILES.CANCEL | translate"
>
<mat-icon>close</mat-icon>
</button>
@ -68,12 +68,12 @@
<strong>{{ profile.name }}</strong>
@if (profile.id === profileService.activeProfile()?.id) {
<span class="active-badge">{{
'USER_PROFILES.ACTIVE' | translate
T.USER_PROFILES.ACTIVE | translate
}}</span>
}
</div>
<div class="profile-meta">
{{ 'USER_PROFILES.CREATED' | translate }}
{{ T.USER_PROFILES.CREATED | translate }}
{{ profile.createdAt | date: 'medium' }}
</div>
</div>
@ -81,7 +81,7 @@
<button
mat-icon-button
(click)="startEdit(profile)"
[matTooltip]="'USER_PROFILES.RENAME' | translate"
[matTooltip]="T.USER_PROFILES.RENAME | translate"
[disabled]="profileService.profiles().length === 1"
>
<mat-icon>edit</mat-icon>
@ -89,14 +89,14 @@
<button
mat-icon-button
(click)="exportProfile(profile)"
[matTooltip]="'USER_PROFILES.EXPORT_PROFILE' | translate"
[matTooltip]="T.USER_PROFILES.EXPORT_PROFILE | translate"
>
<mat-icon>download</mat-icon>
</button>
<button
mat-icon-button
(click)="deleteProfile(profile)"
[matTooltip]="'USER_PROFILES.DELETE_PROFILE' | translate"
[matTooltip]="T.USER_PROFILES.DELETE_PROFILE | translate"
[disabled]="
profile.id === profileService.activeProfile()?.id ||
profileService.profiles().length === 1
@ -118,6 +118,6 @@
mat-button
(click)="close()"
>
{{ 'USER_PROFILES.CLOSE' | translate }}
{{ T.USER_PROFILES.CLOSE | translate }}
</button>
</mat-dialog-actions>

View file

@ -17,6 +17,7 @@ import { UserProfile } from '../user-profile.model';
import { SnackService } from '../../../core/snack/snack.service';
import { TranslatePipe } from '@ngx-translate/core';
import { IS_ELECTRON } from '../../../app.constants';
import { T } from '../../../t.const';
@Component({
selector: 'dialog-user-profile-management',
@ -51,6 +52,7 @@ export class DialogUserProfileManagementComponent {
readonly isCreating = signal(false);
readonly isElectron = IS_ELECTRON;
readonly T = T;
async createProfile(): Promise<void> {
const name = this.newProfileName();

View file

@ -9,6 +9,7 @@ import { DialogUserProfileManagementComponent } from '../dialog-user-profile-man
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { MatDivider } from '@angular/material/divider';
import { TranslatePipe } from '@ngx-translate/core';
import { T } from '../../../t.const';
@Component({
selector: 'user-profile-button',
@ -60,7 +61,7 @@ import { TranslatePipe } from '@ngx-translate/core';
(click)="openManagementDialog()"
>
<mat-icon>settings</mat-icon>
<span>{{ 'USER_PROFILES.MANAGE_PROFILES' | translate }}</span>
<span>{{ T.USER_PROFILES.MANAGE_PROFILES | translate }}</span>
</button>
</mat-menu>
`,
@ -84,6 +85,7 @@ export class UserProfileButtonComponent {
private readonly _matDialog = inject(MatDialog);
readonly isLoading = signal(false);
readonly T = T;
async switchToProfile(profileId: string): Promise<void> {
if (this.isLoading()) return;

View file

@ -1,21 +1,21 @@
<mat-card class="info-card">
<mat-card-header>
<mat-card-title
>⚠️️️{{ 'PLUGINS.EXPERIMENTAL_WARNING_TITLE' | translate }} ⚠️️️
>⚠️️️{{ T.PLUGINS.EXPERIMENTAL_WARNING_TITLE | translate }} ⚠️️️
</mat-card-title>
</mat-card-header>
<mat-card-content>
<div class="warning-content">
<p>{{ 'PLUGINS.SECURITY_WARNING' | translate }}</p>
<p>{{ T.PLUGINS.SECURITY_WARNING | translate }}</p>
<ul>
<li>{{ 'PLUGINS.RISK_DATA_ACCESS' | translate }}</li>
<li>{{ 'PLUGINS.RISK_MALICIOUS_CODE' | translate }}</li>
<li>{{ 'PLUGINS.RISK_SYSTEM_ACCESS' | translate }}</li>
<li>{{ 'PLUGINS.RISK_PERFORMANCE' | translate }}</li>
<li>{{ T.PLUGINS.RISK_DATA_ACCESS | translate }}</li>
<li>{{ T.PLUGINS.RISK_MALICIOUS_CODE | translate }}</li>
<li>{{ T.PLUGINS.RISK_SYSTEM_ACCESS | translate }}</li>
<li>{{ T.PLUGINS.RISK_PERFORMANCE | translate }}</li>
</ul>
<p class="recommendation">
<mat-icon>security</mat-icon>
{{ 'PLUGINS.RECOMMENDATION' | translate }}
{{ T.PLUGINS.RECOMMENDATION | translate }}
</p>
</div>
</mat-card-content>
@ -32,14 +32,14 @@
<mat-card>
<mat-card-header>
<mat-card-title>{{ 'PLUGINS.INSTALL_PLUGIN' | translate }}</mat-card-title>
<mat-card-title>{{ T.PLUGINS.INSTALL_PLUGIN | translate }}</mat-card-title>
</mat-card-header>
<mat-card-content>
<div class="install-warning">
<mat-icon>info</mat-icon>
<span>{{ 'PLUGINS.INSTALL_WARNING' | translate }}</span>
<span>{{ T.PLUGINS.INSTALL_WARNING | translate }}</span>
</div>
<p>{{ 'PLUGINS.UPLOAD_PLUGIN_INSTRUCTION' | translate }}</p>
<p>{{ T.PLUGINS.UPLOAD_PLUGIN_INSTRUCTION | translate }}</p>
<input
#fileInput
type="file"
@ -56,8 +56,8 @@
<mat-icon>upload</mat-icon>
{{
isUploading()
? ('PLUGINS.INSTALLING' | translate)
: ('PLUGINS.CHOOSE_PLUGIN_FILE' | translate)
? (T.PLUGINS.INSTALLING | translate)
: (T.PLUGINS.CHOOSE_PLUGIN_FILE | translate)
}}
</button>
@if (uploadError()) {
@ -74,7 +74,7 @@
[disabled]="isUploading()"
>
<mat-icon>delete_sweep</mat-icon>
{{ 'PLUGINS.CLEAR_PLUGIN_CACHE' | translate }}
{{ T.PLUGINS.CLEAR_PLUGIN_CACHE | translate }}
</button>
</div>
</mat-card-content>
@ -116,7 +116,7 @@
[disabled]="!canEnablePlugin(plugin) || isPluginLoading(plugin)"
(change)="onPluginToggle(plugin, $event)"
[attr.aria-label]="
'PLUGINS.TOGGLE_PLUGIN' | translate: { pluginName: plugin.manifest.name }
T.PLUGINS.TOGGLE_PLUGIN | translate: { pluginName: plugin.manifest.name }
"
>
</mat-slide-toggle>
@ -142,12 +142,12 @@
<table>
<tr>
<th>{{ 'PLUGINS.ID' | translate }}</th>
<th>{{ T.PLUGINS.ID | translate }}</th>
<td>{{ plugin.manifest.id }}</td>
</tr>
@if (plugin.manifest.minSupVersion) {
<tr>
<th>{{ 'PLUGINS.MIN_VERSION' | translate }}</th>
<th>{{ T.PLUGINS.MIN_VERSION | translate }}</th>
<td>{{ plugin.manifest.minSupVersion }}</td>
</tr>
}
@ -160,7 +160,7 @@
<collapsible [title]="getPermissionsHooksTitle(plugin)">
@if (plugin.manifest.permissions && plugin.manifest.permissions.length > 0) {
<div class="plugin-info-section">
<div class="label">{{ 'PLUGINS.PERMISSIONS' | translate }}:</div>
<div class="label">{{ T.PLUGINS.PERMISSIONS | translate }}:</div>
<mat-chip-set>
@for (permission of plugin.manifest.permissions; track permission) {
<mat-chip>{{ permission }}</mat-chip>
@ -170,7 +170,7 @@
}
@if (plugin.manifest.hooks && plugin.manifest.hooks.length > 0) {
<div class="plugin-info-section">
<div class="label">{{ 'PLUGINS.HOOKS' | translate }}:</div>
<div class="label">{{ T.PLUGINS.HOOKS | translate }}:</div>
<mat-chip-set>
@for (hook of plugin.manifest.hooks; track hook) {
<mat-chip>{{ hook }}</mat-chip>
@ -191,7 +191,7 @@
[disabled]="isUploading()"
>
<mat-icon>delete</mat-icon>
{{ 'PLUGINS.REMOVE' | translate }}
{{ T.PLUGINS.REMOVE | translate }}
</button>
</mat-card-actions>
}

View file

@ -1,15 +1,4 @@
const T = {
ANDROID: {
NOTIFICATIONS: {
SYNC_CONFLICT_MSG: 'ANDROID.NOTIFICATIONS.SYNC_CONFLICT_MSG',
SYNC_CONFLICT_TITLE: 'ANDROID.NOTIFICATIONS.SYNC_CONFLICT_TITLE',
},
PERMANENT_NOTIFICATION_MSGS: {
INITIAL: 'ANDROID.PERMANENT_NOTIFICATION_MSGS.INITIAL',
NO_ACTIVE_TASKS: 'ANDROID.PERMANENT_NOTIFICATION_MSGS.NO_ACTIVE_TASKS',
SYNCING: 'ANDROID.PERMANENT_NOTIFICATION_MSGS.SYNCING',
},
},
APP: {
B_INSTALL: {
IGNORE: 'APP.B_INSTALL.IGNORE',
@ -134,26 +123,6 @@ const T = {
HELP: 'F.CALDAV.FORM_SECTION.HELP',
TITLE: 'F.CALDAV.FORM_SECTION.TITLE',
},
ISSUE_CONTENT: {
ASSIGNEE: 'F.CALDAV.ISSUE_CONTENT.ASSIGNEE',
AT: 'F.CALDAV.ISSUE_CONTENT.AT',
ATTACHMENTS: 'F.CALDAV.ISSUE_CONTENT.ATTACHMENTS',
CHANGED: 'F.CALDAV.ISSUE_CONTENT.CHANGED',
COMMENTS: 'F.CALDAV.ISSUE_CONTENT.COMMENTS',
COMPONENTS: 'F.CALDAV.ISSUE_CONTENT.COMPONENTS',
DESCRIPTION: 'F.CALDAV.ISSUE_CONTENT.DESCRIPTION',
LABELS: 'F.CALDAV.ISSUE_CONTENT.LABELS',
LIST_OF_CHANGES: 'F.CALDAV.ISSUE_CONTENT.LIST_OF_CHANGES',
MARK_AS_CHECKED: 'F.CALDAV.ISSUE_CONTENT.MARK_AS_CHECKED',
ON: 'F.CALDAV.ISSUE_CONTENT.ON',
RELATED: 'F.CALDAV.ISSUE_CONTENT.RELATED',
STATUS: 'F.CALDAV.ISSUE_CONTENT.STATUS',
STORY_POINTS: 'F.CALDAV.ISSUE_CONTENT.STORY_POINTS',
SUB_TASKS: 'F.CALDAV.ISSUE_CONTENT.SUB_TASKS',
SUMMARY: 'F.CALDAV.ISSUE_CONTENT.SUMMARY',
WORKLOG: 'F.CALDAV.ISSUE_CONTENT.WORKLOG',
WRITE_A_COMMENT: 'F.CALDAV.ISSUE_CONTENT.WRITE_A_COMMENT',
},
S: {
CALENDAR_NOT_FOUND: 'F.CALDAV.S.CALENDAR_NOT_FOUND',
CALENDAR_READ_ONLY: 'F.CALDAV.S.CALENDAR_READ_ONLY',
@ -163,6 +132,7 @@ const T = {
CALENDARS: {
BANNER: {
ADD_AS_TASK: 'F.CALENDARS.BANNER.ADD_AS_TASK',
FOCUS_TASK: 'F.CALENDARS.BANNER.FOCUS_TASK',
SHOW_TASK: 'F.CALENDARS.BANNER.SHOW_TASK',
TXT: 'F.CALENDARS.BANNER.TXT',
TXT_MULTIPLE: 'F.CALENDARS.BANNER.TXT_MULTIPLE',
@ -236,6 +206,7 @@ const T = {
COMPLETE_FOCUS_SESSION: 'F.FOCUS_MODE.COMPLETE_FOCUS_SESSION',
COMPLETE_SESSION: 'F.FOCUS_MODE.COMPLETE_SESSION',
CONGRATS: 'F.FOCUS_MODE.CONGRATS',
CONTINUE_FOCUS_SESSION: 'F.FOCUS_MODE.CONTINUE_FOCUS_SESSION',
CONTINUE_SESSION: 'F.FOCUS_MODE.CONTINUE_SESSION',
CONTINUE_TO_NEXT_SESSION: 'F.FOCUS_MODE.CONTINUE_TO_NEXT_SESSION',
COUNTDOWN: 'F.FOCUS_MODE.COUNTDOWN',
@ -640,11 +611,25 @@ const T = {
ADD_NOTE_FOR_TOMORROW: 'F.METRIC.EVAL_FORM.ADD_NOTE_FOR_TOMORROW',
DAILY_STATE: 'F.METRIC.EVAL_FORM.DAILY_STATE',
DAILY_STATE_TOOLTIP: 'F.METRIC.EVAL_FORM.DAILY_STATE_TOOLTIP',
DISABLE_REPEAT_EVERY_DAY: 'F.METRIC.EVAL_FORM.DISABLE_REPEAT_EVERY_DAY',
ENABLE_REPEAT_EVERY_DAY: 'F.METRIC.EVAL_FORM.ENABLE_REPEAT_EVERY_DAY',
ENERGY_LEVEL: 'F.METRIC.EVAL_FORM.ENERGY_LEVEL',
ENERGY_LEVEL_HINT: 'F.METRIC.EVAL_FORM.ENERGY_LEVEL_HINT',
FOCUS_WORK_TIME: 'F.METRIC.EVAL_FORM.FOCUS_WORK_TIME',
HELP_H1: 'F.METRIC.EVAL_FORM.HELP_H1',
HELP_LINK_TXT: 'F.METRIC.EVAL_FORM.HELP_LINK_TXT',
HELP_P1: 'F.METRIC.EVAL_FORM.HELP_P1',
HELP_P2: 'F.METRIC.EVAL_FORM.HELP_P2',
IMPACT_OF_WORK: 'F.METRIC.EVAL_FORM.IMPACT_OF_WORK',
IMPACT_OF_WORK_HINT: 'F.METRIC.EVAL_FORM.IMPACT_OF_WORK_HINT',
IMPROVEMENTS: 'F.METRIC.EVAL_FORM.IMPROVEMENTS',
IMPROVEMENTS_TOMORROW: 'F.METRIC.EVAL_FORM.IMPROVEMENTS_TOMORROW',
MOOD: 'F.METRIC.EVAL_FORM.MOOD',
MOOD_HINT: 'F.METRIC.EVAL_FORM.MOOD_HINT',
NOTES: 'F.METRIC.EVAL_FORM.NOTES',
OBSTRUCTIONS: 'F.METRIC.EVAL_FORM.OBSTRUCTIONS',
PRODUCTIVITY: 'F.METRIC.EVAL_FORM.PRODUCTIVITY',
PRODUCTIVITY_HINT: 'F.METRIC.EVAL_FORM.PRODUCTIVITY_HINT',
PRODUCTIVITY_SCORE: 'F.METRIC.EVAL_FORM.PRODUCTIVITY_SCORE',
PRODUCTIVITY_SCORE_TOOLTIP: 'F.METRIC.EVAL_FORM.PRODUCTIVITY_SCORE_TOOLTIP',
SCORE_BREAKDOWN_TITLE_PRODUCTIVITY:
@ -888,10 +873,10 @@ const T = {
},
PROJECT: {
D_CONFIRM_DUPLICATE_BIG_PROJECT: {
TITLE: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.TITLE',
CANCEL: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.CANCEL',
MSG: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.MSG',
OK: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.OK',
CANCEL: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.CANCEL',
TITLE: 'F.PROJECT.D_CONFIRM_DUPLICATE_BIG_PROJECT.TITLE',
},
D_CREATE: {
CREATE: 'F.PROJECT.D_CREATE.CREATE',
@ -1009,6 +994,40 @@ const T = {
S_ACTIVE_TASK_DUE: 'F.REMINDER.S_ACTIVE_TASK_DUE',
S_REMINDER_ERR: 'F.REMINDER.S_REMINDER_ERR',
},
SAFETY_BACKUP: {
BACKUP_NOT_FOUND: 'F.SAFETY_BACKUP.BACKUP_NOT_FOUND',
BTN_CLEAR_ALL: 'F.SAFETY_BACKUP.BTN_CLEAR_ALL',
BTN_CREATE_MANUAL: 'F.SAFETY_BACKUP.BTN_CREATE_MANUAL',
BTN_DELETE: 'F.SAFETY_BACKUP.BTN_DELETE',
BTN_REFRESH: 'F.SAFETY_BACKUP.BTN_REFRESH',
BTN_RESTORE: 'F.SAFETY_BACKUP.BTN_RESTORE',
CLEAR_FAILED: 'F.SAFETY_BACKUP.CLEAR_FAILED',
CLEARED_SUCCESS: 'F.SAFETY_BACKUP.CLEARED_SUCCESS',
CREATE_FAILED: 'F.SAFETY_BACKUP.CREATE_FAILED',
CREATED_SUCCESS: 'F.SAFETY_BACKUP.CREATED_SUCCESS',
DELETE_FAILED: 'F.SAFETY_BACKUP.DELETE_FAILED',
DELETED_SUCCESS: 'F.SAFETY_BACKUP.DELETED_SUCCESS',
DESCRIPTION: 'F.SAFETY_BACKUP.DESCRIPTION',
INVALID_ID_ERROR: 'F.SAFETY_BACKUP.INVALID_ID_ERROR',
LAST_CHANGE_PREFIX: 'F.SAFETY_BACKUP.LAST_CHANGE_PREFIX',
LOADING: 'F.SAFETY_BACKUP.LOADING',
NO_BACKUPS: 'F.SAFETY_BACKUP.NO_BACKUPS',
REASON_BEFORE_UPDATE: 'F.SAFETY_BACKUP.REASON_BEFORE_UPDATE',
REASON_MANUAL: 'F.SAFETY_BACKUP.REASON_MANUAL',
RESTORE_CONFIRM_MSG: 'F.SAFETY_BACKUP.RESTORE_CONFIRM_MSG',
RESTORE_CONFIRM_TITLE: 'F.SAFETY_BACKUP.RESTORE_CONFIRM_TITLE',
RESTORE_FAILED: 'F.SAFETY_BACKUP.RESTORE_FAILED',
RESTORED_SUCCESS: 'F.SAFETY_BACKUP.RESTORED_SUCCESS',
SLOT_BEFORE_TODAY: 'F.SAFETY_BACKUP.SLOT_BEFORE_TODAY',
SLOT_RECENT: 'F.SAFETY_BACKUP.SLOT_RECENT',
SLOT_TODAY: 'F.SAFETY_BACKUP.SLOT_TODAY',
TITLE: 'F.SAFETY_BACKUP.TITLE',
TOOLTIP_CLEAR_ALL: 'F.SAFETY_BACKUP.TOOLTIP_CLEAR_ALL',
TOOLTIP_CREATE_MANUAL: 'F.SAFETY_BACKUP.TOOLTIP_CREATE_MANUAL',
TOOLTIP_DELETE: 'F.SAFETY_BACKUP.TOOLTIP_DELETE',
TOOLTIP_REFRESH: 'F.SAFETY_BACKUP.TOOLTIP_REFRESH',
TOOLTIP_RESTORE: 'F.SAFETY_BACKUP.TOOLTIP_RESTORE',
},
SCHEDULE: {
CONTINUED: 'F.SCHEDULE.CONTINUED',
D_INITIAL: {
@ -1198,11 +1217,11 @@ const T = {
ERROR_CORS: 'F.SYNC.S.ERROR_CORS',
ERROR_DATA_IS_CURRENTLY_WRITTEN: 'F.SYNC.S.ERROR_DATA_IS_CURRENTLY_WRITTEN',
ERROR_FALLBACK_TO_BACKUP: 'F.SYNC.S.ERROR_FALLBACK_TO_BACKUP',
ERROR_INVALID_DATA: 'F.SYNC.S.ERROR_INVALID_DATA',
ERROR_NO_REV: 'F.SYNC.S.ERROR_NO_REV',
ERROR_PERMISSION: 'F.SYNC.S.ERROR_PERMISSION',
ERROR_PERMISSION_FLATPAK: 'F.SYNC.S.ERROR_PERMISSION_FLATPAK',
ERROR_PERMISSION_SNAP: 'F.SYNC.S.ERROR_PERMISSION_SNAP',
ERROR_INVALID_DATA: 'F.SYNC.S.ERROR_INVALID_DATA',
ERROR_NO_REV: 'F.SYNC.S.ERROR_NO_REV',
ERROR_UNABLE_TO_READ_REMOTE_DATA: 'F.SYNC.S.ERROR_UNABLE_TO_READ_REMOTE_DATA',
IMPORTING: 'F.SYNC.S.IMPORTING',
INCOMPLETE_CFG: 'F.SYNC.S.INCOMPLETE_CFG',
@ -1596,6 +1615,7 @@ const T = {
FILTER_BY: 'F.TASK_VIEW.CUSTOMIZER.FILTER_BY',
FILTER_DEFAULT: 'F.TASK_VIEW.CUSTOMIZER.FILTER_DEFAULT',
FILTER_ESTIMATED_TIME: 'F.TASK_VIEW.CUSTOMIZER.FILTER_ESTIMATED_TIME',
FILTER_NOT_SPECIFIED: 'F.TASK_VIEW.CUSTOMIZER.FILTER_NOT_SPECIFIED',
FILTER_PROJECT: 'F.TASK_VIEW.CUSTOMIZER.FILTER_PROJECT',
FILTER_SCHEDULED_DATE: 'F.TASK_VIEW.CUSTOMIZER.FILTER_SCHEDULED_DATE',
FILTER_TAG: 'F.TASK_VIEW.CUSTOMIZER.FILTER_TAG',
@ -1612,6 +1632,7 @@ const T = {
SCHEDULED_THIS_WEEK: 'F.TASK_VIEW.CUSTOMIZER.SCHEDULED_THIS_WEEK',
SCHEDULED_TODAY: 'F.TASK_VIEW.CUSTOMIZER.SCHEDULED_TODAY',
SCHEDULED_TOMORROW: 'F.TASK_VIEW.CUSTOMIZER.SCHEDULED_TOMORROW',
SORT_BY: 'F.TASK_VIEW.CUSTOMIZER.SORT_BY',
SORT_CREATION_DATE: 'F.TASK_VIEW.CUSTOMIZER.SORT_CREATION_DATE',
SORT_DEFAULT: 'F.TASK_VIEW.CUSTOMIZER.SORT_DEFAULT',
SORT_NAME: 'F.TASK_VIEW.CUSTOMIZER.SORT_NAME',
@ -1622,7 +1643,6 @@ const T = {
TIME_2HOUR: 'F.TASK_VIEW.CUSTOMIZER.TIME_2HOUR',
TIME_10MIN: 'F.TASK_VIEW.CUSTOMIZER.TIME_10MIN',
TIME_30MIN: 'F.TASK_VIEW.CUSTOMIZER.TIME_30MIN',
FILTER_NOT_SPECIFIED: 'F.TASK_VIEW.CUSTOMIZER.FILTER_NOT_SPECIFIED',
TIME_SPENT: 'F.TASK_VIEW.CUSTOMIZER.TIME_SPENT',
TITLE: 'F.TASK_VIEW.CUSTOMIZER.TITLE',
},
@ -1791,6 +1811,22 @@ const T = {
YESTERDAY: 'G.YESTERDAY',
},
GCF: {
APP_FEATURES: {
BOARDS: 'GCF.APP_FEATURES.BOARDS',
DONATE_PAGE: 'GCF.APP_FEATURES.DONATE_PAGE',
FOCUS_MODE: 'GCF.APP_FEATURES.FOCUS_MODE',
HELP: 'GCF.APP_FEATURES.HELP',
ISSUES_PANEL: 'GCF.APP_FEATURES.ISSUES_PANEL',
PLANNER: 'GCF.APP_FEATURES.PLANNER',
PROJECT_NOTES: 'GCF.APP_FEATURES.PROJECT_NOTES',
SCHEDULE: 'GCF.APP_FEATURES.SCHEDULE',
SCHEDULE_DAY_PANEL: 'GCF.APP_FEATURES.SCHEDULE_DAY_PANEL',
SYNC_BUTTON: 'GCF.APP_FEATURES.SYNC_BUTTON',
TIME_TRACKING: 'GCF.APP_FEATURES.TIME_TRACKING',
TITLE: 'GCF.APP_FEATURES.TITLE',
USER_PROFILES: 'GCF.APP_FEATURES.USER_PROFILES',
USER_PROFILES_HINT: 'GCF.APP_FEATURES.USER_PROFILES_HINT',
},
AUTO_BACKUPS: {
HELP: 'GCF.AUTO_BACKUPS.HELP',
LABEL_IS_ENABLED: 'GCF.AUTO_BACKUPS.LABEL_IS_ENABLED',
@ -1813,12 +1849,12 @@ const T = {
FOCUS_MODE: {
HELP: 'GCF.FOCUS_MODE.HELP',
L_ALWAYS_OPEN_FOCUS_MODE: 'GCF.FOCUS_MODE.L_ALWAYS_OPEN_FOCUS_MODE',
L_SYNC_SESSION_WITH_TRACKING: 'GCF.FOCUS_MODE.L_SYNC_SESSION_WITH_TRACKING',
L_IS_PLAY_TICK: 'GCF.FOCUS_MODE.L_IS_PLAY_TICK',
L_MANUAL_BREAK_START: 'GCF.FOCUS_MODE.L_MANUAL_BREAK_START',
L_PAUSE_TRACKING_DURING_BREAK: 'GCF.FOCUS_MODE.L_PAUSE_TRACKING_DURING_BREAK',
L_SKIP_PREPARATION_SCREEN: 'GCF.FOCUS_MODE.L_SKIP_PREPARATION_SCREEN',
L_START_IN_BACKGROUND: 'GCF.FOCUS_MODE.L_START_IN_BACKGROUND',
L_MANUAL_BREAK_START: 'GCF.FOCUS_MODE.L_MANUAL_BREAK_START',
L_SYNC_SESSION_WITH_TRACKING: 'GCF.FOCUS_MODE.L_SYNC_SESSION_WITH_TRACKING',
TITLE: 'GCF.FOCUS_MODE.TITLE',
},
IDLE: {
@ -1912,26 +1948,26 @@ const T = {
RU: 'GCF.LANG.RU',
SK: 'GCF.LANG.SK',
SV: 'GCF.LANG.SV',
TIME_LOCALE: 'GCF.LANG.TIME_LOCALE',
TIME_LOCALE_AUTO: 'GCF.LANG.TIME_LOCALE_AUTO',
TIME_LOCALE_DE_DE: 'GCF.LANG.TIME_LOCALE_DE_DE',
TIME_LOCALE_DESCRIPTION: 'GCF.LANG.TIME_LOCALE_DESCRIPTION',
TIME_LOCALE_EN_GB: 'GCF.LANG.TIME_LOCALE_EN_GB',
TIME_LOCALE_EN_US: 'GCF.LANG.TIME_LOCALE_EN_US',
TIME_LOCALE_ES_ES: 'GCF.LANG.TIME_LOCALE_ES_ES',
TIME_LOCALE_FR_FR: 'GCF.LANG.TIME_LOCALE_FR_FR',
TIME_LOCALE_IT_IT: 'GCF.LANG.TIME_LOCALE_IT_IT',
TIME_LOCALE_JA_JP: 'GCF.LANG.TIME_LOCALE_JA_JP',
TIME_LOCALE_KO_KR: 'GCF.LANG.TIME_LOCALE_KO_KR',
TIME_LOCALE_PT_BR: 'GCF.LANG.TIME_LOCALE_PT_BR',
TIME_LOCALE_RU_RU: 'GCF.LANG.TIME_LOCALE_RU_RU',
TIME_LOCALE_TR_TR: 'GCF.LANG.TIME_LOCALE_TR_TR',
TIME_LOCALE_ZH_CN: 'GCF.LANG.TIME_LOCALE_ZH_CN',
TITLE: 'GCF.LANG.TITLE',
TR: 'GCF.LANG.TR',
UK: 'GCF.LANG.UK',
ZH: 'GCF.LANG.ZH',
ZH_TW: 'GCF.LANG.ZH_TW',
TIME_LOCALE: 'GCF.LANG.TIME_LOCALE',
TIME_LOCALE_DESCRIPTION: 'GCF.LANG.TIME_LOCALE_DESCRIPTION',
TIME_LOCALE_AUTO: 'GCF.LANG.TIME_LOCALE_AUTO',
TIME_LOCALE_EN_US: 'GCF.LANG.TIME_LOCALE_EN_US',
TIME_LOCALE_EN_GB: 'GCF.LANG.TIME_LOCALE_EN_GB',
TIME_LOCALE_TR_TR: 'GCF.LANG.TIME_LOCALE_TR_TR',
TIME_LOCALE_DE_DE: 'GCF.LANG.TIME_LOCALE_DE_DE',
TIME_LOCALE_FR_FR: 'GCF.LANG.TIME_LOCALE_FR_FR',
TIME_LOCALE_ES_ES: 'GCF.LANG.TIME_LOCALE_ES_ES',
TIME_LOCALE_IT_IT: 'GCF.LANG.TIME_LOCALE_IT_IT',
TIME_LOCALE_PT_BR: 'GCF.LANG.TIME_LOCALE_PT_BR',
TIME_LOCALE_RU_RU: 'GCF.LANG.TIME_LOCALE_RU_RU',
TIME_LOCALE_ZH_CN: 'GCF.LANG.TIME_LOCALE_ZH_CN',
TIME_LOCALE_JA_JP: 'GCF.LANG.TIME_LOCALE_JA_JP',
TIME_LOCALE_KO_KR: 'GCF.LANG.TIME_LOCALE_KO_KR',
},
MISC: {
DARK_MODE: 'GCF.MISC.DARK_MODE',
@ -1960,6 +1996,7 @@ const T = {
IS_TURN_OFF_MARKDOWN: 'GCF.MISC.IS_TURN_OFF_MARKDOWN',
IS_USE_CUSTOM_WINDOW_TITLE_BAR: 'GCF.MISC.IS_USE_CUSTOM_WINDOW_TITLE_BAR',
IS_USE_CUSTOM_WINDOW_TITLE_BAR_HINT: 'GCF.MISC.IS_USE_CUSTOM_WINDOW_TITLE_BAR_HINT',
IS_USE_MINIMAL_SIDE_NAV: 'GCF.MISC.IS_USE_MINIMAL_SIDE_NAV',
START_OF_NEXT_DAY: 'GCF.MISC.START_OF_NEXT_DAY',
START_OF_NEXT_DAY_HINT: 'GCF.MISC.START_OF_NEXT_DAY_HINT',
TASK_NOTES_TPL: 'GCF.MISC.TASK_NOTES_TPL',
@ -1967,6 +2004,21 @@ const T = {
THEME_EXPERIMENTAL: 'GCF.MISC.THEME_EXPERIMENTAL',
THEME_SELECT_LABEL: 'GCF.MISC.THEME_SELECT_LABEL',
TITLE: 'GCF.MISC.TITLE',
USER_PROFILES: 'GCF.MISC.USER_PROFILES',
USER_PROFILES_HINT: 'GCF.MISC.USER_PROFILES_HINT',
},
PAST: {
A_DAY: 'GCF.PAST.A_DAY',
A_MINUTE: 'GCF.PAST.A_MINUTE',
A_MONTH: 'GCF.PAST.A_MONTH',
A_YEAR: 'GCF.PAST.A_YEAR',
AN_HOUR: 'GCF.PAST.AN_HOUR',
DAYS: 'GCF.PAST.DAYS',
FEW_SECONDS: 'GCF.PAST.FEW_SECONDS',
HOURS: 'GCF.PAST.HOURS',
MINUTES: 'GCF.PAST.MINUTES',
MONTHS: 'GCF.PAST.MONTHS',
YEARS: 'GCF.PAST.YEARS',
},
POMODORO: {
BREAK_DURATION: 'GCF.POMODORO.BREAK_DURATION',
@ -1977,9 +2029,9 @@ const T = {
REMINDER: {
COUNTDOWN_DURATION: 'GCF.REMINDER.COUNTDOWN_DURATION',
DEFAULT_TASK_REMIND_OPTION: 'GCF.REMINDER.DEFAULT_TASK_REMIND_OPTION',
DISABLE_REMINDERS: 'GCF.REMINDER.DISABLE_REMINDERS',
IS_COUNTDOWN_BANNER_ENABLED: 'GCF.REMINDER.IS_COUNTDOWN_BANNER_ENABLED',
TITLE: 'GCF.REMINDER.TITLE',
DISABLE_REMINDERS: 'GCF.REMINDER.DISABLE_REMINDERS',
},
SCHEDULE: {
HELP: 'GCF.SCHEDULE.HELP',
@ -2042,23 +2094,22 @@ const T = {
L_TRACKING_REMINDER_MIN_TIME: 'GCF.TIME_TRACKING.L_TRACKING_REMINDER_MIN_TIME',
TITLE: 'GCF.TIME_TRACKING.TITLE',
},
APP_FEATURES: {
HELP: 'GCF.APP_FEATURES.HELP',
TITLE: 'GCF.APP_FEATURES.TITLE',
TIME_TRACKING: 'GCF.APP_FEATURES.TIME_TRACKING',
FOCUS_MODE: 'GCF.APP_FEATURES.FOCUS_MODE',
SCHEDULE: 'GCF.APP_FEATURES.SCHEDULE',
PLANNER: 'GCF.APP_FEATURES.PLANNER',
BOARDS: 'GCF.APP_FEATURES.BOARDS',
SCHEDULE_DAY_PANEL: 'GCF.APP_FEATURES.SCHEDULE_DAY_PANEL',
ISSUES_PANEL: 'GCF.APP_FEATURES.ISSUES_PANEL',
PROJECT_NOTES: 'GCF.APP_FEATURES.PROJECT_NOTES',
SYNC_BUTTON: 'GCF.APP_FEATURES.SYNC_BUTTON',
DONATE_PAGE: 'GCF.APP_FEATURES.DONATE_PAGE',
USER_PROFILES: 'GCF.APP_FEATURES.USER_PROFILES',
USER_PROFILES_HINT: 'GCF.APP_FEATURES.USER_PROFILES_HINT',
TIMELINE: {
CAL_PROVIDERS: 'GCF.TIMELINE.CAL_PROVIDERS',
CAL_PROVIDERS_ADD: 'GCF.TIMELINE.CAL_PROVIDERS_ADD',
CAL_PROVIDERS_INFO: 'GCF.TIMELINE.CAL_PROVIDERS_INFO',
HELP: 'GCF.TIMELINE.HELP',
L_CAL_PATH: 'GCF.TIMELINE.L_CAL_PATH',
L_IS_WORK_START_END_ENABLED: 'GCF.TIMELINE.L_IS_WORK_START_END_ENABLED',
L_WORK_END: 'GCF.TIMELINE.L_WORK_END',
L_WORK_START: 'GCF.TIMELINE.L_WORK_START',
TITLE: 'GCF.TIMELINE.TITLE',
WORK_START_END_DESCRIPTION: 'GCF.TIMELINE.WORK_START_END_DESCRIPTION',
},
},
GLOBAL: {
COPY_SUFFIX: 'GLOBAL.COPY_SUFFIX',
},
GLOBAL_RELATIVE_TIME: {
FUTURE: {
A_DAY: 'GLOBAL_RELATIVE_TIME.FUTURE.A_DAY',
@ -2107,9 +2158,6 @@ const T = {
'GLOBAL_SNACK.SHORTCUT_WARN_OPEN_BOOKMARKS_FROM_TAG',
UNPLANNED_TODAY_TASKS: 'GLOBAL_SNACK.UNPLANNED_TODAY_TASKS',
},
GLOBAL: {
COPY_SUFFIX: 'GLOBAL.COPY_SUFFIX',
},
GPB: {
ASSETS: 'GPB.ASSETS',
DBX_DOWNLOAD: 'GPB.DBX_DOWNLOAD',
@ -2129,11 +2177,11 @@ const T = {
BOARDS: 'MH.BOARDS',
COPY_TASK_LIST_MARKDOWN: 'MH.COPY_TASK_LIST_MARKDOWN',
CREATE_PROJECT: 'MH.CREATE_PROJECT',
DUPLICATE_PROJECT: 'MH.DUPLICATE_PROJECT',
CREATE_TAG: 'MH.CREATE_TAG',
DELETE_PROJECT: 'MH.DELETE_PROJECT',
DELETE_TAG: 'MH.DELETE_TAG',
DONATE: 'MH.DONATE',
DUPLICATE_PROJECT: 'MH.DUPLICATE_PROJECT',
ENTER_FOCUS_MODE: 'MH.ENTER_FOCUS_MODE',
GO_TO_TASK_LIST: 'MH.GO_TO_TASK_LIST',
HELP: 'MH.HELP',
@ -2150,6 +2198,7 @@ const T = {
METRICS: 'MH.METRICS',
NO_PROJECT_INFO: 'MH.NO_PROJECT_INFO',
NO_TAG_INFO: 'MH.NO_TAG_INFO',
NO_TASKS_TO_TRACK: 'MH.NO_TASKS_TO_TRACK',
NOTES: 'MH.NOTES',
NOTES_PANEL_INFO: 'MH.NOTES_PANEL_INFO',
PLANNER: 'MH.PLANNER',
@ -2171,7 +2220,6 @@ const T = {
TOGGLE_SHOW_ISSUE_PANEL: 'MH.TOGGLE_SHOW_ISSUE_PANEL',
TOGGLE_SHOW_NOTES: 'MH.TOGGLE_SHOW_NOTES',
TOGGLE_TRACK_TIME: 'MH.TOGGLE_TRACK_TIME',
NO_TASKS_TO_TRACK: 'MH.NO_TASKS_TO_TRACK',
TRIGGER_SYNC: 'MH.TRIGGER_SYNC',
UNPLAN_ALL_TASKS: 'MH.UNPLAN_ALL_TASKS',
WORKLOG: 'MH.WORKLOG',
@ -2189,6 +2237,7 @@ const T = {
PLURAL: 'PDS.ARCHIVED_TASKS.PLURAL',
SINGULAR: 'PDS.ARCHIVED_TASKS.SINGULAR',
},
BACK: 'PDS.BACK',
BREAK_LABEL: 'PDS.BREAK_LABEL',
CELEBRATE: 'PDS.CELEBRATE',
CLEAR_ALL_CONTINUE: 'PDS.CLEAR_ALL_CONTINUE',
@ -2197,10 +2246,10 @@ const T = {
MSG: 'PDS.D_CONFIRM_APP_CLOSE.MSG',
OK: 'PDS.D_CONFIRM_APP_CLOSE.OK',
},
END_OF_DAYS_RITUALS_PLACEHOLDER: 'PDS.END_OF_DAYS_RITUALS_PLACEHOLDER',
ESTIMATE_TOTAL: 'PDS.ESTIMATE_TOTAL',
EVALUATE_DAY: 'PDS.EVALUATE_DAY',
EXPORT_TASK_LIST: 'PDS.EXPORT_TASK_LIST',
END_OF_DAYS_RITUALS_PLACEHOLDER: 'PDS.END_OF_DAYS_RITUALS_PLACEHOLDER',
FOCUS_SUMMARY: 'PDS.FOCUS_SUMMARY',
NO_TASKS: 'PDS.NO_TASKS',
PLAN_TOMORROW: 'PDS.PLAN_TOMORROW',
@ -2352,24 +2401,6 @@ const T = {
SCHEDULED_TASKS_WITH_TIME: 'SCHEDULE.SCHEDULED_TASKS_WITH_TIME',
START_TASK: 'SCHEDULE.START_TASK',
},
THEMES: {
amber: 'THEMES.amber',
blue: 'THEMES.blue',
'blue-grey': 'THEMES.blue-grey',
cyan: 'THEMES.cyan',
'deep-orange': 'THEMES.deep-orange',
'deep-purple': 'THEMES.deep-purple',
green: 'THEMES.green',
indigo: 'THEMES.indigo',
'light-blue': 'THEMES.light-blue',
'light-green': 'THEMES.light-green',
lime: 'THEMES.lime',
pink: 'THEMES.pink',
purple: 'THEMES.purple',
SELECT_THEME: 'THEMES.SELECT_THEME',
teal: 'THEMES.teal',
yellow: 'THEMES.yellow',
},
USER_PROFILES: {
ACTIVE: 'USER_PROFILES.ACTIVE',
CANCEL: 'USER_PROFILES.CANCEL',

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "الرجاء التحقق و اختيار ما العمل",
"SYNC_CONFLICT_TITLE": "حدث تعارض في المزامنة"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "التطبيق يعمل في الخلفية للسماح بالمزامنة إذا كانت مفعلة",
"NO_ACTIVE_TASKS": "ليس هناك مهمات نشطة",
"SYNCING": "المزامنة جارية"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "تجاهل",
@ -127,26 +116,6 @@
"HELP": "<p>\nهنا يمكنك تهيئة الإنتاجية الفائقة لإدراج مهام كالداف غير المكتملة لمشروع معين في لوحة إنشاء المهام في عرض التخطيط اليومي. سيتم إدراجها كاقتراحات وستوفر رابطًا للمهمة بالإضافة إلى مزيد من المعلومات عنها. \n</p>\n<p>\n.بالإضافة إلى ذلك، يمكنك إضافة جميع المهام غير المكتملة ومزامنتها تلقائيًا إلى المهام المتراكمة لديك \n</p>\n<p><a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "كالداف"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "المحال",
"AT": "في",
"ATTACHMENTS": "المرفقات",
"CHANGED": "تغيير",
"COMMENTS": "التعليقات",
"COMPONENTS": "مكونات",
"DESCRIPTION": "وصف",
"LABELS": "الاقسام",
"LIST_OF_CHANGES": "قائمة التغييرات",
"MARK_AS_CHECKED": "وضع علامة على التحديثات على أنها محددة",
"ON": "على",
"RELATED": "ذات الصله",
"STATUS": "الحالة",
"STORY_POINTS": "نقاط القصة",
"SUB_TASKS": "الفرعيه",
"SUMMARY": "ملخص",
"WORKLOG": "سجل العمل",
"WRITE_A_COMMENT": "اكتب تعليقا"
},
"S": {
"CALENDAR_NOT_FOUND": " كالداف : التقويم غير موجود\n\"{{calendarName}}\" ",
"CALENDAR_READ_ONLY": "كالداف: التقويم للقراءة فقط\n\"{{calendarName}}\"",
@ -2255,24 +2224,6 @@
"SCHEDULED_TASKS_WITH_TIME": "المهام المجدولة مع التذكير",
"START_TASK": "بدء المهمة الآن وإزالة تذكير"
},
"THEMES": {
"amber": "كهرمان",
"blue": "أزرق",
"blue-grey": "رمادي مزرق",
"cyan": "ازرق سماوي",
"deep-orange": "برتقالي غامق",
"deep-purple": "أرجواني غامق",
"green": "أخضر",
"indigo": "نيلي",
"light-blue": "أزرق فاتح",
"light-green": "اخضر فاتح",
"lime": "ليمي",
"pink": "زهري",
"purple": "أرجواني",
"SELECT_THEME": "اختر مظهر",
"teal": "شرشيري",
"yellow": "الأصفر"
},
"USER_PROFILES": {
"ACTIVE": "نشط",
"CANCEL": "إلغاء",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Zkontrolujte a rozhodněte se, co udělat.",
"SYNC_CONFLICT_TITLE": "Došlo k synchronizačnímu konfliktu"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Aplikace běží na pozadí pro povolení synchronizace, pokud je povolena",
"NO_ACTIVE_TASKS": "Žádné aktivní úkoly",
"SYNCING": "Probíhá synchronizace"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorovat",
@ -72,13 +61,6 @@
"HELP": "<p>Zde můžete nakonfigurovat SuperProductivity tak, aby v seznamu úkolů pro konkrétní projekt v panelu vytváření úkolů v denním plánovacím zobrazení zobrazoval neukončené úkoly CalDav. Budou uvedeny jako návrhy a poskytnou odkaz na úkol a další informace o něm.</p> <p>Kromě toho můžete automaticky přidat a synchronizovat všechny neukončené úkoly do vašeho backlogu úkolů.</p><p>Aby to fungovalo v Nextcloud ve webové aplikaci, možná budete muset přidat „https://app.super-productivity.com“ na bílý seznam pomocí aplikace Nextcloud <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword</a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"DESCRIPTION": "Popis",
"LABELS": "Kategorie",
"MARK_AS_CHECKED": "Označit aktualizace jako kontrolované",
"STATUS": "Stav",
"SUMMARY": "Souhrn"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalendář „{{calendarName}}“ nebyl nalezen",
"CALENDAR_READ_ONLY": "CalDav: Kalendář „{{calendarName}}“ je pouze pro čtení",
@ -1379,24 +1361,6 @@
"SCHEDULED_TASKS": "Naplánované úkoly",
"START_TASK": "Spustit úkol a odebrat připomínku"
},
"THEMES": {
"amber": "žlutá",
"blue": "modrá",
"blue-grey": "modro-šedá",
"cyan": "azurová",
"deep-orange": "hluboká oranžová",
"deep-purple": "hluboká fialová",
"green": "zelená",
"indigo": "indigová",
"light-blue": "světle modrá",
"light-green": "světle zelená",
"lime": "limetková",
"pink": "růžová",
"purple": "fialová",
"SELECT_THEME": "Vyberte téma",
"teal": "tyrkysová",
"yellow": "žlutá"
},
"V": {
"E_1TO10": "Zadejte prosím hodnotu mezi 1 a 10",
"E_DATETIME": "Zadaná hodnota není datum a čas!",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Bitte nachsehen und entscheiden, was zu tun ist",
"SYNC_CONFLICT_TITLE": "Ein Synchronisationskonflikt ist aufgetreten"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "App läuft im Hintergrund, um Synchronisation zu ermöglichen, wenn aktiviert",
"NO_ACTIVE_TASKS": "Keine aktiven Aufgaben",
"SYNCING": "Synchronisierung"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorieren",
@ -132,26 +121,6 @@
"HELP": "<p>Hier können Sie SuperProductivity so konfigurieren, dass unvollständige CalDav-Aufgaben für ein bestimmtes Projekt im Aufgabenerstellungsfenster in der täglichen Planungsansicht aufgelistet werden. Sie werden als Vorschläge aufgeführt und enthalten einen Link zur Aufgabe sowie weitere Informationen dazu.</p> <p>Außerdem können Sie automatisch alle nicht abgeschlossenen Aufgaben zu Ihrem Aufgaben-Backlog hinzufügen und synchronisieren.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Zuständiger",
"AT": "Bei",
"ATTACHMENTS": "Anhänge",
"CHANGED": "Geändert",
"COMMENTS": "Kommentare",
"COMPONENTS": "Komponenten",
"DESCRIPTION": "Beschreibung",
"LABELS": "Kategorien",
"LIST_OF_CHANGES": "Liste der Änderungen",
"MARK_AS_CHECKED": "Updates als erledigt markieren",
"ON": "auf",
"RELATED": "Verwandt",
"STATUS": "Status",
"STORY_POINTS": "Story-Punkte",
"SUB_TASKS": "Unteraufgaben",
"SUMMARY": "Zusammenfassung",
"WORKLOG": "Arbeitsprotokoll",
"WRITE_A_COMMENT": "Einen Kommentar schreiben"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalender \"{{calendarName}}\" nicht gefunden",
"CALENDAR_READ_ONLY": "CalDav: Kalender \"{{calendarName}}\" ist schreibgeschützt",
@ -2301,24 +2270,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Geplante Aufgaben mit Erinnerung",
"START_TASK": "Aufgabe jetzt starten und Erinnerung entfernen"
},
"THEMES": {
"amber": "Bernstein",
"blue": "Blau",
"blue-grey": "Blau-Grau",
"cyan": "Cyan",
"deep-orange": "Tief-Orange",
"deep-purple": "Dunkellila",
"green": "Grün",
"indigo": "Indigo",
"light-blue": "Hellblau",
"light-green": "Hellgrün",
"lime": "Limette",
"pink": "Rosa",
"purple": "Lila",
"SELECT_THEME": "Farbschema wählen",
"teal": "Blaugrün",
"yellow": "Gelb"
},
"USER_PROFILES": {
"ACTIVE": "Aktiv",
"CANCEL": "Abbrechen",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Please check and decide what to do.",
"SYNC_CONFLICT_TITLE": "A sync conflict occurred"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "App running in background to allow for syncing if enabled",
"NO_ACTIVE_TASKS": "No active tasks",
"SYNCING": "Syncing"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignore",
@ -133,26 +122,6 @@
"HELP": "<p>Here you can configure SuperProductivity to list uncompleted CalDav todos for a specific project in the task creation panel in the daily planning view. They will be listed as suggestions and will provide a link to the todo as well as more information about it.</p> <p>In addition you can automatically add and sync all uncompleted todos to your task backlog.</p><p>To make it work for nextcloud in the webapp, you might need to whitelist \"https://app.super-productivity.com\" via the nextcloud app <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Assignee",
"AT": "at",
"ATTACHMENTS": "Attachments",
"CHANGED": "changed",
"COMMENTS": "Comments",
"COMPONENTS": "Components",
"DESCRIPTION": "Description",
"LABELS": "Categories",
"LIST_OF_CHANGES": "List of changes",
"MARK_AS_CHECKED": "Mark updates as checked",
"ON": "on",
"RELATED": "Related",
"STATUS": "Status",
"STORY_POINTS": "Story Points",
"SUB_TASKS": "Subtasks",
"SUMMARY": "Summary",
"WORKLOG": "Worklog",
"WRITE_A_COMMENT": "Write a comment"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Calendar \"{{calendarName}}\" not found",
"CALENDAR_READ_ONLY": "CalDav: Calendar \"{{calendarName}}\" is readonly",
@ -2398,24 +2367,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Scheduled Tasks with Start Time",
"START_TASK": "Start task and remove reminder"
},
"THEMES": {
"amber": "amber",
"blue": "blue",
"blue-grey": "blue-grey",
"cyan": "cyan",
"deep-orange": "deep-orange",
"deep-purple": "deep-purple",
"green": "green",
"indigo": "indigo",
"light-blue": "light-blue",
"light-green": "light-green",
"lime": "lime",
"pink": "pink",
"purple": "purple",
"SELECT_THEME": "Select Theme",
"teal": "teal",
"yellow": "yellow"
},
"USER_PROFILES": {
"ACTIVE": "Active",
"CANCEL": "Cancel",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Por favor, revisa y decide qué hacer.",
"SYNC_CONFLICT_TITLE": "Ocurrió un conflicto de sincronización"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "La aplicación se ejecuta en segundo plano para permitir la sincronización si está habilitada",
"NO_ACTIVE_TASKS": "Sin tareas activas",
"SYNCING": "Sincronizando"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorar",
@ -132,26 +121,6 @@
"HELP": "<p>Aquí puedes configurar SuperProductivity para listar tareas de CalDav no completadas para un proyecto específico en el panel de creación de tareas en la vista de planificación diaria. Se listarán como sugerencias y proporcionarán un enlace a la tarea así como más información sobre ella.</p> <p>Además puedes añadir y sincronizar automáticamente todas las tareas no completadas a tu backlog de tareas.</p><p>Para que funcione con nextcloud en la aplicación web, es posible que necesites poner en la lista blanca \"https://app.super-productivity.com\" a través de la aplicación de nextcloud <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Asignado",
"AT": "en",
"ATTACHMENTS": "Adjuntos",
"CHANGED": "cambiado",
"COMMENTS": "Comentarios",
"COMPONENTS": "Componentes",
"DESCRIPTION": "Descripción",
"LABELS": "Categorías",
"LIST_OF_CHANGES": "Lista de cambios",
"MARK_AS_CHECKED": "Marcar actualizaciones como revisadas",
"ON": "el",
"RELATED": "Relacionado",
"STATUS": "Estado",
"STORY_POINTS": "Puntos de historia",
"SUB_TASKS": "Subtareas",
"SUMMARY": "Resumen",
"WORKLOG": "Registro de trabajo",
"WRITE_A_COMMENT": "Escribir un comentario"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Calendario \"{{calendarName}}\" no encontrado",
"CALENDAR_READ_ONLY": "CalDav: El calendario \"{{calendarName}}\" es de solo lectura",
@ -2301,24 +2270,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Tareas Programadas con Hora de Inicio",
"START_TASK": "Iniciar tarea y eliminar recordatorio"
},
"THEMES": {
"amber": "ámbar",
"blue": "azul",
"blue-grey": "azul-gris",
"cyan": "cian",
"deep-orange": "naranja-intenso",
"deep-purple": "morado-intenso",
"green": "verde",
"indigo": "índigo",
"light-blue": "azul-claro",
"light-green": "verde-claro",
"lime": "lima",
"pink": "rosa",
"purple": "morado",
"SELECT_THEME": "Seleccionar Tema",
"teal": "verde azulado",
"yellow": "amarillo"
},
"USER_PROFILES": {
"ACTIVE": "Activo",
"CANCEL": "Cancelar",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "لطفا بررسی کنید و تصمیم بگیرید که چه کاری انجام دهید.",
"SYNC_CONFLICT_TITLE": "یک تضاد همگام سازی رخ داد"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "برنامه در حال اجرا در پس زمینه برای امکان همگام سازی در صورت فعال بودن",
"NO_ACTIVE_TASKS": "بدون کار فعال",
"SYNCING": "در حال همگام سازی"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "نادیده گرفتن",
@ -127,26 +116,6 @@
"HELP": "<p>در اینجا می توانید SuperProductivity را پیکربندی کنید تا لیست های انجام نشده CalDav را برای یک پروژه خاص در صفحه ایجاد کار در نمای برنامه ریزی روزانه لیست کنید. آنها به عنوان پیشنهادها لیست می شوند و پیوندی به این کار و همچنین اطلاعات بیشتر در مورد آن را ارائه می دهند.</p> <p>علاوه بر این شما می توانید به طور خودکار تمام موارد خاتمه یافته ناقص را به پرونده کار خود اضافه و همگام سازی کنید.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "وکیل",
"AT": "در",
"ATTACHMENTS": "پیوست",
"CHANGED": "تغییر",
"COMMENTS": "نظرات",
"COMPONENTS": "قطعات",
"DESCRIPTION": "شرح",
"LABELS": "دسته بندی ها",
"LIST_OF_CHANGES": "لیست تغییرات",
"MARK_AS_CHECKED": "به روزرسانی ها را به عنوان علامت گذاری شده علامت گذاری کنید",
"ON": "در",
"RELATED": "مربوط",
"STATUS": "وضعیت",
"STORY_POINTS": "نکات داستانی",
"SUB_TASKS": "وظایف فرعی",
"SUMMARY": "خلاصه",
"WORKLOG": "گزارش کار",
"WRITE_A_COMMENT": "نظر بنویسید"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: تقویم \"{{calendarName}}\" یافت نشد",
"CALENDAR_READ_ONLY": "CalDav: تقویم \"{{calendarName}}\" فقط خواندنی است",
@ -2255,24 +2224,6 @@
"SCHEDULED_TASKS_WITH_TIME": "کارهای برنامه ریزی شده با یادآوری",
"START_TASK": "Start task now and remove reminder"
},
"THEMES": {
"amber": "کهربایی",
"blue": "آبی",
"blue-grey": "آبی خاکستری",
"cyan": "فیروزه ای",
"deep-orange": "نارنجی تیره",
"deep-purple": "بنفش پررنگ",
"green": "سبز",
"indigo": "نیلی",
"light-blue": "آبی روشن",
"light-green": "سبز روشن",
"lime": "لیمویی",
"pink": "صورتی",
"purple": "بنفش",
"SELECT_THEME": "انتخاب قالب",
"teal": "teal",
"yellow": "زرد"
},
"USER_PROFILES": {
"ACTIVE": "فعال",
"CANCEL": "لغو",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Tarkista ja päätä mitä tehdä.",
"SYNC_CONFLICT_TITLE": "Synkronointivirhe tapahtui"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Sovellus käynnissä taustalla mahdollistaen synkronoinnin, jos käytössä",
"NO_ACTIVE_TASKS": "Ei aktiivisia tehtäviä",
"SYNCING": "Synkronoidaan"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ohita",
@ -132,26 +121,6 @@
"HELP": "<p>Tässä voit määrittää SuperProductivityn listamaan keskeneräiset CalDav-tehtävät tietyn projektin osalta tehtävänluontipaneelissa päivittäisessä suunnittelinäkymässä. Ne listataan ehdotuksina ja tarjoavat linkin tehtävään sekä lisätietoja siitä.</p> <p>Lisäksi voit automaattisesti lisätä ja synkronoida kaikki keskeneräiset tehtävät taakkaputkeesi.</p><p>Jotta se toimisi nextcloudissa verkkosovelluksessa, sinun on ehkä sallittava \"https://app.super-productivity.com\" nextcloud-sovelluksen <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a> kautta.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Vastuuhenkilö",
"AT": "klo",
"ATTACHMENTS": "Liitteet",
"CHANGED": "muutettu",
"COMMENTS": "Kommentit",
"COMPONENTS": "Komponentit",
"DESCRIPTION": "Kuvaus",
"LABELS": "Kategoriat",
"LIST_OF_CHANGES": "Muutoslista",
"MARK_AS_CHECKED": "Merkitse päivitykset tarkastetuiksi",
"ON": "päivänä",
"RELATED": "Liittyvät",
"STATUS": "Tila",
"STORY_POINTS": "Story Pointit",
"SUB_TASKS": "Alitehtävät",
"SUMMARY": "Yhteenveto",
"WORKLOG": "Työloki",
"WRITE_A_COMMENT": "Kirjoita kommentti"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalenteria \"{{calendarName}}\" ei löytynyt",
"CALENDAR_READ_ONLY": "CalDav: Kalenteri \"{{calendarName}}\" on vain luku -tilassa",
@ -2315,24 +2284,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Aikataulutetut tehtävät aloitusajalla",
"START_TASK": "Aloita tehtävä ja poista muistutus"
},
"THEMES": {
"amber": "meripihka",
"blue": "sininen",
"blue-grey": "siniharmaa",
"cyan": "syaani",
"deep-orange": "tumma oranssi",
"deep-purple": "tumma violetti",
"green": "vihreä",
"indigo": "indigo",
"light-blue": "vaaleansininen",
"light-green": "vaaleanvihreä",
"lime": "lime",
"pink": "vaaleanpunainen",
"purple": "violetti",
"SELECT_THEME": "Valitse teema",
"teal": "sinivihreä",
"yellow": "keltainen"
},
"USER_PROFILES": {
"ACTIVE": "Aktiivinen",
"CANCEL": "Peruuta",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Veuillez vérifier et décider quoi faire.",
"SYNC_CONFLICT_TITLE": "Un conflit de synchronisation s'est produit"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Application exécutée en arrière-plan pour permettre la synchronisation si elle est activée",
"NO_ACTIVE_TASKS": "Aucune tâche active",
"SYNCING": "Synchronisation"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorer",
@ -132,26 +121,6 @@
"HELP": "<p>Ici, vous pouvez configurer SuperProductivity pour répertorier les tâches CalDav inachevées pour un projet spécifique dans le panneau de création de tâches de la vue de planification quotidienne. Ils seront listés comme des suggestions et fourniront un lien vers le todo ainsi que plus d'informations à ce sujet.</p> <p>En outre, vous pouvez automatiquement ajouter et synchroniser toutes les tâches inachevées dans votre backlog de tâches.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Bénéficiaire",
"AT": "À",
"ATTACHMENTS": "Pièces jointes",
"CHANGED": "Modifié",
"COMMENTS": "Commentaires",
"COMPONENTS": "Composants",
"DESCRIPTION": "La description",
"LABELS": "catégories",
"LIST_OF_CHANGES": "Liste des changements",
"MARK_AS_CHECKED": "Marquer les mises à jour comme cochées",
"ON": "sur",
"RELATED": "Lié",
"STATUS": "Statut",
"STORY_POINTS": "Points d'histoire",
"SUB_TASKS": "Sous-tâches",
"SUMMARY": "Résumé",
"WORKLOG": "Journal de travail",
"WRITE_A_COMMENT": "Écrire un commentaire"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: calendrier \"{{calendarName}}\" introuvable",
"CALENDAR_READ_ONLY": "CalDav: l'agenda \"{{calendarName}}\" est en lecture seule",
@ -2317,24 +2286,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Planifier les tâches avec rappel",
"START_TASK": "Démarrer la tâche maintenant et supprimer le rappel"
},
"THEMES": {
"amber": "ambre",
"blue": "Bleu",
"blue-grey": "Bleu gris",
"cyan": "Cyan",
"deep-orange": "orange foncé",
"deep-purple": "Violet foncé",
"green": "Vert",
"indigo": "Indigo",
"light-blue": "Bleu clair",
"light-green": "Vert clair",
"lime": "Vert citron",
"pink": "rose",
"purple": "Violet",
"SELECT_THEME": "Sélectionner un thème",
"teal": "Turquoise",
"yellow": "Jaune"
},
"USER_PROFILES": {
"ACTIVE": "Actif",
"CANCEL": "Annuler",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Provjeri i odluči što uraditi.",
"SYNC_CONFLICT_TITLE": "Dogodila se greška u sinkronizaciji"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Program radi u pozadini kako bi se omogućila sinkronizacija, ukoliko je aktivirana",
"NO_ACTIVE_TASKS": "Nema aktivnih zadataka",
"SYNCING": "Sinkronizacija u tijeku"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Zanemari",
@ -112,26 +101,6 @@
"HELP": "<p>Ovdje možeš konfigurirati Super Productivity za prikaz popisa nezavršenih CalDav zadataka za određeni projekt na ploči za stvaranje zadataka u prikazu dnevnog planiranja. U popisu će se ti zadaci navesti kao prijedlozi s poveznicom na zadatak te s daljnjim informacija o zadatku.</p> <p>Osim toga, sve nezavršene zadatke možeš automatski dodati u odlagalište zadataka i sinkronizirati ih.</p><p>Da bi to za nextcloud radilo na mobilnom uređaju i webu, možda ćeš morati staviti „https://app.super-productivity.com” na popis dopuštenih putem nextcloud programa <a href='https://apps.nextcloud. com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Devwa",
"AT": "alèz",
"ATTACHMENTS": "Atachman",
"CHANGED": "Chanje",
"COMMENTS": "Kòmantè",
"COMPONENTS": "Eleman",
"DESCRIPTION": "Opis",
"LABELS": "Kategorije",
"LIST_OF_CHANGES": "Lis chanjman yo",
"MARK_AS_CHECKED": "Označi aktualiziranja kao provjerena",
"ON": "Sou",
"RELATED": "Fanmi",
"STATUS": "Stanje",
"STORY_POINTS": "Pwen istwa",
"SUB_TASKS": "Subtasks",
"SUMMARY": "Sažetak",
"WORKLOG": "Travay",
"WRITE_A_COMMENT": "Ekri yon kòmantè"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalendar „{{calendarName}}” nije pronađen",
"CALENDAR_READ_ONLY": "CalDav: Kalendar „{{calendarName}}” je samo-za-čitanje",
@ -1837,24 +1806,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Travay pwograme ak rapèl",
"START_TASK": "Započni zadatak i ukloni podsjetnika"
},
"THEMES": {
"amber": "jantar",
"blue": "plava",
"blue-grey": "plavosiva",
"cyan": "cijan",
"deep-orange": "tamnonarančasta",
"deep-purple": "tamnoljubičasta",
"green": "zelena",
"indigo": "indigo",
"light-blue": "svjetloplava",
"light-green": "svjetlozelena",
"lime": "limunasta",
"pink": "ružičasta",
"purple": "ljubičasta",
"SELECT_THEME": "Odaberi temu",
"teal": "plavozelena",
"yellow": "žuta"
},
"USER_PROFILES": {
"ACTIVE": "Aktivan",
"CANCEL": "Odustani",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Mohon periksa dan lakukan apa yang harus dilakukan.",
"SYNC_CONFLICT_TITLE": "Konflik sinkronasi terjadi"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Aplikasi berjalan di latar belakang untuk memungkinkan sinkronasi jika diaktifkan",
"NO_ACTIVE_TASKS": "Tidak ada tugas yang aktif",
"SYNCING": "Menyinkronkan"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Abaikan",
@ -132,26 +121,6 @@
"HELP": "<p>Di sini Anda dapat mengonfigurasi SuperProductivity untuk membuat daftar tugas CalDav yang belum selesai untuk proyek tertentu di panel pembuatan tugas dalam tampilan perencanaan harian. Mereka akan terdaftar sebagai saran dan akan memberikan tautan ke todo serta informasi lebih lanjut tentangnya.</p> <p>Selain itu, Anda dapat secara otomatis menambahkan dan menyinkronkan semua tugas yang belum selesai ke backlog tugas Anda</p><p>Agar berfungsi untuk nextcloud di aplikasi web, Anda mungkin perlu memasukkannya ke daftar putih (whitelist) \"https://app.super-productivity.com\" melalui aplikasi Nextcloud <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Penanggung jawab",
"AT": "di",
"ATTACHMENTS": "Lampiran",
"CHANGED": "diubah",
"COMMENTS": "Komentar",
"COMPONENTS": "Komponen",
"DESCRIPTION": "Deskripsi",
"LABELS": "Kategori",
"LIST_OF_CHANGES": "Daftar perubahan",
"MARK_AS_CHECKED": "Tandai pembaruan sebagai dicentang",
"ON": "pada",
"RELATED": "Terkait",
"STATUS": "Status",
"STORY_POINTS": "Poin Cerita",
"SUB_TASKS": "Subtugas",
"SUMMARY": "Ringkasan",
"WORKLOG": "Catatan kerja",
"WRITE_A_COMMENT": "Tulis Komentar"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalender \"{{calendarName}}\" tidak ditemukan",
"CALENDAR_READ_ONLY": "CalDav: Kalender \"{{calendarName}}\" hanya bisa dibaca (readonly)",
@ -2317,24 +2286,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Tugas terjadwal dengan pengingat",
"START_TASK": "Mulai tugas dan hapus pengingat"
},
"THEMES": {
"amber": "amber",
"blue": "biru",
"blue-grey": "biru-abu-abu",
"cyan": "cyan",
"deep-orange": "oranye tua",
"deep-purple": "ungu tua",
"green": "hijau",
"indigo": "nila",
"light-blue": "biru terang",
"light-green": "hijau terang",
"lime": "jeruk nipis",
"pink": "merah muda",
"purple": "ungu",
"SELECT_THEME": "Pilih Tema",
"teal": "teal",
"yellow": "kuning"
},
"USER_PROFILES": {
"ACTIVE": "Aktif",
"CANCEL": "Batal",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Verifica e scegli come procedere.",
"SYNC_CONFLICT_TITLE": "Conflitto durante la sincronizzazione"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "App in esecuzione in background per permettere la sincronizzazione se attiva",
"NO_ACTIVE_TASKS": "Nessuna attività in corso",
"SYNCING": "Sincronizzazione in corso"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignora",
@ -132,26 +121,6 @@
"HELP": "<p>Qui puoi configurare SuperProductivity per elencare le cose da fare CalDav non completate per un progetto specifico nel pannello di creazione dell'attività nella visualizzazione della pianificazione giornaliera. Verranno elencati come suggerimenti e forniranno un collegamento alla cosa da fare, nonché ulteriori informazioni a riguardo.</p> <p>Inoltre, è possibile aggiungere e sincronizzare automaticamente tutte le attività non completate tra le arretrate.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Assegnatario",
"AT": "a",
"ATTACHMENTS": "Allegati",
"CHANGED": "modificato",
"COMMENTS": "Commenti",
"COMPONENTS": "Componenti",
"DESCRIPTION": "Descrizione",
"LABELS": "Categorie",
"LIST_OF_CHANGES": "Elenco delle modifiche",
"MARK_AS_CHECKED": "Contrassegna gli aggiornamenti come controllati",
"ON": "su",
"RELATED": "Correlato",
"STATUS": "Stato",
"STORY_POINTS": "Punti storia",
"SUB_TASKS": "Sotto-attività",
"SUMMARY": "Sommario",
"WORKLOG": "Registro di lavoro",
"WRITE_A_COMMENT": "Scrivi un commento"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: calendario \"{{calendarName}}\" non trovato",
"CALENDAR_READ_ONLY": "CalDav: il calendario \"{{calendarName}}\" è di sola lettura",
@ -2317,24 +2286,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Attività pianificate con promemoria",
"START_TASK": "Inizia l'attività ora e rimuovi promemoria"
},
"THEMES": {
"amber": "ambra",
"blue": "blu",
"blue-grey": "blu-grigio",
"cyan": "ciano",
"deep-orange": "arancio-intenso",
"deep-purple": "viola-intenso",
"green": "verde",
"indigo": "indaco",
"light-blue": "azzurro",
"light-green": "verde-chiaro",
"lime": "lime",
"pink": "rosa",
"purple": "viola",
"SELECT_THEME": "Seleziona tema",
"teal": "verde acqua",
"yellow": "giallo"
},
"USER_PROFILES": {
"ACTIVE": "Attivo",
"CANCEL": "Annulla",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "確認して何をするか決めてください。",
"SYNC_CONFLICT_TITLE": "同期の競合が発生しました"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "同期を有効にするためにバックグラウンドで実行されているアプリ",
"NO_ACTIVE_TASKS": "アクティブなタスクなし",
"SYNCING": "同期中"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "無視する",
@ -127,26 +116,6 @@
"HELP": "<p>ここでは、SuperProductivityを構成して、特定のプロジェクトの未完了のCalDavタスクを日次計画ビューのタスク作成パネルに一覧表示できます。それらは提案としてリストされ、todoへのリンクとそれに関する詳細情報を提供します。</p> <p>さらに、未完了のすべてのToDoをタスクバックログに自動的に追加して同期することができます。</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "担当者",
"AT": "で",
"ATTACHMENTS": "添付 ファイル",
"CHANGED": "変更",
"COMMENTS": "コメント",
"COMPONENTS": "コンポーネント",
"DESCRIPTION": "説明",
"LABELS": "カテゴリー",
"LIST_OF_CHANGES": "変更点の一覧",
"MARK_AS_CHECKED": "更新をチェック済みとしてマーク",
"ON": "オン",
"RELATED": "関連",
"STATUS": "状態",
"STORY_POINTS": "ストーリーポイント",
"SUB_TASKS": "サブタスク",
"SUMMARY": "概要",
"WORKLOG": "ワークログ",
"WRITE_A_COMMENT": "コメントを書く"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDavカレンダー \"{{calendarName}}\"が見つかりません",
"CALENDAR_READ_ONLY": "CalDavカレンダー \"{{calendarName}}\"は読み取り専用です",
@ -2243,24 +2212,6 @@
"SCHEDULED_TASKS_WITH_TIME": "リマインダー付きスケジュールタスク",
"START_TASK": "今すぐタスクを開始してリマインダーを削除"
},
"THEMES": {
"amber": "アンバー",
"blue": "青",
"blue-grey": "ブルーグレー",
"cyan": "シアン",
"deep-orange": "濃いオレンジ",
"deep-purple": "濃い紫",
"green": "緑",
"indigo": "インディゴ",
"light-blue": "ライトブルー",
"light-green": "薄緑",
"lime": "ライム",
"pink": "ピンク",
"purple": "紫",
"SELECT_THEME": "テーマを選択",
"teal": "ティール",
"yellow": "黄"
},
"USER_PROFILES": {
"ACTIVE": "アクティブ",
"CANCEL": "キャンセル",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "확인 후 조치 방법을 결정하세요.",
"SYNC_CONFLICT_TITLE": "동기화 충돌이 발생했습니다."
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "앱이 백그라운드에서 실행되어 동기화를 허용하는 경우 활성화된 경우",
"NO_ACTIVE_TASKS": "활성 작업 없음",
"SYNCING": "동기화"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "무시",
@ -112,26 +101,6 @@
"HELP": "<p>여기에서 일일 계획 보기의 작업 생성 패널에서 특정 프로젝트에 대해 완료되지 않은 CalDav 할 일을 나열하도록 SuperProductivity를 구성할 수 있습니다. 제안 사항으로 나열되며 할 일에 대한 링크와 이에 대한 추가 정보를 제공합니다.</p> <p>또한 완료되지 않은 모든 할 일을 작업 백로그에 자동으로 추가하고 동기화할 수 있습니다.</p><p>모바일 및 웹의 nextcloud에서 작동하도록 하려면 nextcloud 앱 <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>를 통해 \"https://app.super-productivity.com\"을 허용 목록에 추가해야 할 수 있습니다.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "담당자",
"AT": "에",
"ATTACHMENTS": "첨부 파일",
"CHANGED": "변경",
"COMMENTS": "코멘트",
"COMPONENTS": "구성 요소",
"DESCRIPTION": "기술",
"LABELS": "카테고리",
"LIST_OF_CHANGES": "변경 사항 목록",
"MARK_AS_CHECKED": "체크 된대로 업데이트 표시",
"ON": "에",
"RELATED": "관련",
"STATUS": "상태",
"STORY_POINTS": "스토리 포인트",
"SUB_TASKS": "하위",
"SUMMARY": "개요",
"WORKLOG": "작업 로그",
"WRITE_A_COMMENT": "덧글 써"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav : 캘린더 \"{{calendarName}}\"을 (를) 찾을 수 없음",
"CALENDAR_READ_ONLY": "CalDav : 캘린더 \"{{calendarName}}\"은 (는) 읽기 전용입니다.",
@ -1872,24 +1841,6 @@
"SCHEDULED_TASKS_WITH_TIME": "미리 알림이 있는 예약된 작업",
"START_TASK": "지금 작업을 시작하고 알림 제거"
},
"THEMES": {
"amber": "호박색",
"blue": "푸른",
"blue-grey": "청회색",
"cyan": "시안 색",
"deep-orange": "진한 오렌지",
"deep-purple": "딥 퍼플",
"green": "녹색",
"indigo": "남빛",
"light-blue": "하늘색",
"light-green": "연한 초록색",
"lime": "라임",
"pink": "담홍색",
"purple": "자주색",
"SELECT_THEME": "주제 선택",
"teal": "물오리",
"yellow": "노랑"
},
"USER_PROFILES": {
"ACTIVE": "활성",
"CANCEL": "취소",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Vennligst sjekk og avgjør hva du skal gjøre.",
"SYNC_CONFLICT_TITLE": "En synkroniseringskonflikt oppstod"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Appen kjører i bakgrunnen for å muliggjøre synkronisering hvis aktivert",
"NO_ACTIVE_TASKS": "Ingen aktive oppgaver",
"SYNCING": "Synkronisering"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Overse",
@ -132,26 +121,6 @@
"HELP": "<p>Her kan du konfigurere SuperProductivity til å liste ufullførte CalDav-oppgaver for et spesifikt prosjekt i opprettingspanelet for oppgaver i den daglige planleggingsvisningen. De vil bli listet som forslag og vil gi en lenke til oppgaven samt mer informasjon om den.<\\/p> <p>I tillegg kan du automatisk legge til og synkronisere alle ufullførte oppgaver til oppgavelisten din.<\\/p><p>For at det skal fungere for Nextcloud i nettappen, må du kanskje hviteliste \"https:\\/\\/app.super-productivity.com\" via Nextcloud-appen <a href='https:\\/\\/apps.nextcloud.com\\/apps\\/webapppassword'>webapppassword<a>.<\\/p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Tildelt",
"AT": "på",
"ATTACHMENTS": "Vedlegg",
"CHANGED": "endret",
"COMMENTS": "Kommentarer",
"COMPONENTS": "Komponenter",
"DESCRIPTION": "Beskrivelse",
"LABELS": "Kategorier",
"LIST_OF_CHANGES": "Liste over endringer",
"MARK_AS_CHECKED": "Merk oppdateringer som sjekket",
"ON": "på",
"RELATED": "Relatert",
"STATUS": "Status",
"STORY_POINTS": "Story Points",
"SUB_TASKS": "Deloppgaver",
"SUMMARY": "Sammendrag",
"WORKLOG": "Arbeidslogg",
"WRITE_A_COMMENT": "Skriv en kommentar"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalender \"{{calendarName}}\" ikke funnet",
"CALENDAR_READ_ONLY": "CalDav: Kalender \"{{calendarName}}\" er skrivebeskyttet",
@ -2317,24 +2286,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Planlagte oppgaver med påminnelse",
"START_TASK": "Start oppgaven og fjern påminnelsen"
},
"THEMES": {
"amber": "rav",
"blue": "blå",
"blue-grey": "blågrå",
"cyan": "turkis",
"deep-orange": "dyp oransje",
"deep-purple": "mørk lilla",
"green": "grønn",
"indigo": "indigo",
"light-blue": "lyseblå",
"light-green": "lysegrønn",
"lime": "kalk",
"pink": "rosa",
"purple": "lilla",
"SELECT_THEME": "Velg Tema",
"teal": "blågrønn",
"yellow": "gul"
},
"USER_PROFILES": {
"ACTIVE": "Aktiv",
"CANCEL": "Avbryt",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Graag controleren en kijken wat te doen",
"SYNC_CONFLICT_TITLE": "Een synchronisatieconflict is opgetreden"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "App draait op de achtergrond om synchronisatie mogelijk te maken als dit is ingeschakeld",
"NO_ACTIVE_TASKS": "Geen actieve taken",
"SYNCING": "Synchroniseren"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Negeren",
@ -132,26 +121,6 @@
"HELP": "<p>Hier kunt u SuperProductivity configureren om niet-voltooide CalDav-taken voor een specifiek project weer te geven in het taakaanmaakpaneel in de dagelijkse planningsweergave. Ze worden vermeld als suggesties en bieden een link naar de taak en meer informatie erover.</p> <p>Bovendien kunt u automatisch alle niet-voltooide taken toevoegen aan en synchroniseren met uw backlog.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Toegewezen persoon",
"AT": "Bij",
"ATTACHMENTS": "Bijlagen",
"CHANGED": "Gewijzigd",
"COMMENTS": "Reacties",
"COMPONENTS": "Componenten",
"DESCRIPTION": "Omschrijving",
"LABELS": "Categorieën",
"LIST_OF_CHANGES": "Lijst van wijzigingen",
"MARK_AS_CHECKED": "Markeer updates als aangevinkt",
"ON": "op",
"RELATED": "Gerelateerd",
"STATUS": "Status",
"STORY_POINTS": "Story Points",
"SUB_TASKS": "Subtaken",
"SUMMARY": "Samenvatting",
"WORKLOG": "Werklog",
"WRITE_A_COMMENT": "Schrijf een opmerking"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: agenda \"{{calendarName}}\" niet gevonden",
"CALENDAR_READ_ONLY": "CalDav: Agenda \"{{calendarName}}\" is alleen-lezen",
@ -2317,24 +2286,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Geplande taken met herinnering",
"START_TASK": "Start de taak nu en verwijder de herinnering"
},
"THEMES": {
"amber": "amber",
"blue": "blauw",
"blue-grey": "blauw grijs",
"cyan": "cyaan",
"deep-orange": "diep oranje",
"deep-purple": "donker paars",
"green": "groen",
"indigo": "indigo",
"light-blue": "lichtblauw",
"light-green": "licht groen",
"lime": "limoen",
"pink": "roze",
"purple": "Purper",
"SELECT_THEME": "Selecteer thema",
"teal": "groenblauw",
"yellow": "geel"
},
"USER_PROFILES": {
"ACTIVE": "Actief",
"CANCEL": "Annuleren",

View file

@ -20,7 +20,8 @@
"CONTEXT_MENU": {
"CHANGE_BACKGROUND": "Zmień tło"
},
"UPDATE_MAIN_MODEL": "Super Productivity posiada ważną aktualizację! Wymagana jest migracja danych do nowej wersji, aktualizacja spowoduje że starsze wersje aplikacji nie będą mogły ich używać.", "UPDATE_MAIN_MODEL_NO_UPDATE": "Nie wybrano aktualizacji modelu. Pamiętaj, że jeśli nie chcesz przeprowadzać aktualizacji modelu, musisz wrócić do poprzedniej wersji aplikacji.",
"UPDATE_MAIN_MODEL": "Super Productivity posiada ważną aktualizację! Wymagana jest migracja danych do nowej wersji, aktualizacja spowoduje że starsze wersje aplikacji nie będą mogły ich używać.",
"UPDATE_MAIN_MODEL_NO_UPDATE": "Nie wybrano aktualizacji modelu. Pamiętaj, że jeśli nie chcesz przeprowadzać aktualizacji modelu, musisz wrócić do poprzedniej wersji aplikacji.",
"UPDATE_MAIN_MODEL_NO_UPDATE": "Nie wybrano aktualizacji modelu. Pamiętaj, że jeśli nie chcesz przeprowadzać aktualizacji modelu, musisz powrócić do poprzedniej wersji.",
"UPDATE_WEB_APP": "Dostępna jest nowa wersja. Czy chcesz są załadować?"
},
@ -53,7 +54,7 @@
"SEARCH_PLACEHOLDER": "np. natura, góry, abstrakcja",
"TITLE": "Wybierz obraz tła z serwisu Unsplash"
},
"DONATE_PAGE": {
"DONATE_PAGE": {
"BUTTON_TEXT": "Przekaż darowiznę za pośrednictwem funkcji sponsorów na GitHub",
"INTRO_1": "Super Produktywność jest w całości finansowana przez społeczność. Nie ma śledzenia, nie ma reklam ani nie gromadzi danych — Twoje dane pozostają na Twoim urządzeniu.",
"INTRO_2": "Jeśli doceniach i popierasz takie podejście i chcesz, aby projekt był dalej rozwijany oraz żeby ewoluował, bardzo doceniamy twoje wsparcie."
@ -1996,24 +1997,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Zaplanowane zadania z przypomnieniem",
"START_TASK": "Ropoczni zadanie i wyłącz przypomnienie"
},
"THEMES": {
"amber": "amber",
"blue": "blue",
"blue-grey": "blue-grey",
"cyan": "cyan",
"deep-orange": "deep-orange",
"deep-purple": "deep-purple",
"green": "green",
"indigo": "indigo",
"light-blue": "light-blue",
"light-green": "light-green",
"lime": "lime",
"pink": "pink",
"purple": "purple",
"SELECT_THEME": "Select Theme",
"teal": "teal",
"yellow": "yellow"
},
"USER_PROFILES": {
"ACTIVE": "Aktywny",
"CANCEL": "Anuluj",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Por favor, verifique e decida o que fazer.",
"SYNC_CONFLICT_TITLE": "Ocorreu um conflito de sincronização"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Aplicativo em execução em segundo plano para permitir a sincronização, se habilitado",
"NO_ACTIVE_TASKS": "Nenhuma tarefa ativa",
"SYNCING": "Sincronizando"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorar",
@ -127,26 +116,6 @@
"HELP": "<p>Aqui você pode configurar o SuperProductivity para listar todos os CalDav não concluídos para um projeto específico no painel de criação de tarefas na visualização de planejamento diário. Eles serão listados como sugestões e fornecerão um link para o todo, bem como mais informações sobre ele.</p><p> Além disso, você pode adicionar e sincronizar automaticamente todas as tarefas não concluídas nas suas pendências.</p><p> Para que funcione no nextcloud no webapp, talvez seja necessário colocar \"https://app.super-productivity.com\" na lista de permissões por meio do <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword</a> do aplicativo nextcloud <a>.</a>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Responsável",
"AT": "Em",
"ATTACHMENTS": "Anexos",
"CHANGED": "alterado",
"COMMENTS": "Comentários",
"COMPONENTS": "Componentes",
"DESCRIPTION": "Descrição",
"LABELS": "Categorias",
"LIST_OF_CHANGES": "Lista de alterações",
"MARK_AS_CHECKED": "Marcar atualizações como verificadas",
"ON": "Em",
"RELATED": "Relacionado",
"STATUS": "Status",
"STORY_POINTS": "Pontos de História",
"SUB_TASKS": "Subtarefas",
"SUMMARY": "Resumo",
"WORKLOG": "Registro de Trabalho",
"WRITE_A_COMMENT": "Escrever um comentário"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Calendário \" {{calendarName}}\" não encontrado",
"CALENDAR_READ_ONLY": "CalDav: O calendário \" {{calendarName}}\" é somente leitura",
@ -2264,24 +2233,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Tarefas agendadas com lembrete",
"START_TASK": "Iniciar tarefa e remover lembrete"
},
"THEMES": {
"amber": "âmbar",
"blue": "azul",
"blue-grey": "azul acinzentado",
"cyan": "ciano",
"deep-orange": "laranja escuro",
"deep-purple": "roxo profundo",
"green": "verde",
"indigo": "índigo",
"light-blue": "azul claro",
"light-green": "verde claro",
"lime": "limão",
"pink": "rosa",
"purple": "roxo",
"SELECT_THEME": "Selecione o tema",
"teal": "verde-azulado",
"yellow": "amarelo"
},
"USER_PROFILES": {
"ACTIVE": "Ativo",
"CANCEL": "Cancelar",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Por favor, revise e decida o que fazer.",
"SYNC_CONFLICT_TITLE": "Houve um conflito de sincronização"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Aplicativo sendo executado em segundo plano para permitir a sincronização, se ativado",
"NO_ACTIVE_TASKS": "Nenhuma tarefa ativa",
"SYNCING": "Sincronizando"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorar",
@ -127,26 +116,6 @@
"HELP": "<p>Aqui você pode configurar SuperProductivity para listar CalDav todos incompletos para um projeto específico no painel de criação de tarefas na visualização de planejamento diário. Eles serão listados como sugestões e fornecerão um link para a tarefa, bem como mais informações sobre ela.</p> <p>Além disso, você pode adicionar e sincronizar automaticamente todas as tarefas não concluídas com a lista de pendências de suas tarefas.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Atribuído",
"AT": "Em",
"ATTACHMENTS": "Anexos",
"CHANGED": "mudou",
"COMMENTS": "Comentários",
"COMPONENTS": "Componentes",
"DESCRIPTION": "Descrição",
"LABELS": "Categorias",
"LIST_OF_CHANGES": "Lista de alterações",
"MARK_AS_CHECKED": "Marcar atualizações como marcadas",
"ON": "Em",
"RELATED": "Relacionado",
"STATUS": "Status",
"STORY_POINTS": "Pontos de História",
"SUB_TASKS": "Subtarefas",
"SUMMARY": "Resumo",
"WORKLOG": "Registo de Trabalho",
"WRITE_A_COMMENT": "Escrever um comentário"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Calendário \"{{calendarName}}\" não encontrado",
"CALENDAR_READ_ONLY": "CalDav: o calendário \"{{calendarName}}\" é somente leitura",
@ -2266,24 +2235,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Tarefas programadas com lembrete",
"START_TASK": "Iniciar tarefa agora e remover lembrete"
},
"THEMES": {
"amber": "Âmbar",
"blue": "Azul",
"blue-grey": "Azul acinzentado",
"cyan": "Ciano",
"deep-orange": "Laranja profundo",
"deep-purple": "Roxo profundo",
"green": "Verde",
"indigo": "Índigo",
"light-blue": "Azul claro",
"light-green": "Verde claro",
"lime": "Lima",
"pink": "Rosa",
"purple": "Roxa",
"SELECT_THEME": "Selecionar Tema",
"teal": "Azul petróleo",
"yellow": "Amarelo"
},
"USER_PROFILES": {
"ACTIVE": "Ativo",
"CANCEL": "Cancelar",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Проверьте и решите, что делать",
"SYNC_CONFLICT_TITLE": "Конфликт синхронизации"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Приложение работает в фоновом режиме, чтобы обеспечить синхронизацию, если она включена",
"NO_ACTIVE_TASKS": "Нет активных задач",
"SYNCING": "Синхронизация"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Игнорировать",
@ -127,26 +116,6 @@
"HELP": "<p>Здесь вы можете настроить Super Productivity, чтобы отображать незавершенные задачи CalDav для конкретного проекта на панели создания задач в представлении ежедневного планирования. Они будут перечислены как предложения и предоставят ссылку на задачу, а также дополнительную информацию о ней.</p> <p>Кроме того, вы можете автоматически добавлять и синхронизировать все незавершенные задачи в журнал невыполненных задач.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Исполнитель",
"AT": "в",
"ATTACHMENTS": "Вложения",
"CHANGED": "Изменено",
"COMMENTS": "Комментарии",
"COMPONENTS": "Компоненты",
"DESCRIPTION": "Описание",
"LABELS": "Метки",
"LIST_OF_CHANGES": "Список изменений",
"MARK_AS_CHECKED": "Отметить обновления как отмеченные",
"ON": "вкл.",
"RELATED": "Связанные",
"STATUS": "Статус",
"STORY_POINTS": "История очков",
"SUB_TASKS": "Подзадачи",
"SUMMARY": "Сводка",
"WORKLOG": "Журнал работы",
"WRITE_A_COMMENT": "Написать комментарий"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Календарь \"{{calendarName}}\" не найден",
"CALENDAR_READ_ONLY": "CalDav: Календарь \"{{calendarName}}\" доступен только для чтения",
@ -2267,24 +2236,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Запланированные задачи с напоминанием",
"START_TASK": "Запустите задачу сейчас и удалите напоминание"
},
"THEMES": {
"amber": "янтарный",
"blue": "синий",
"blue-grey": "серо-голубой",
"cyan": "циан",
"deep-orange": "темно-оранжевый цвет",
"deep-purple": "темно-фиолетовый",
"green": "зеленый",
"indigo": "индиго",
"light-blue": "светло-синий",
"light-green": "светло-зеленый",
"lime": "лайм",
"pink": "розовый",
"purple": "пурпурный",
"SELECT_THEME": "Выберите тему",
"teal": "чирок",
"yellow": "желтый"
},
"USER_PROFILES": {
"ACTIVE": "Активный",
"CANCEL": "Отмена",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Skontrolujte to a rozhodnite sa, čo máte robiť.",
"SYNC_CONFLICT_TITLE": "Vyskytol sa konflikt synchronizácie"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Aplikácia beží na pozadí, aby sa umožnila synchronizácia, ak je povolená",
"NO_ACTIVE_TASKS": "Žiadne aktívne úlohy",
"SYNCING": "Synchronizácia"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorovať",
@ -127,26 +116,6 @@
"HELP": "<p>Here you can configure SuperProductivity to list uncompleted CalDav todos for a specific project in the task creation panel in the daily planning view. They will be listed as suggestions and will provide a link to the todo as well as more information about it.</p> <p>In addition you can automatically add and sync all uncompleted todos to your task backlog.</p><p>To make it work for nextcloud on mobile and web, you might need to whitelist \"https://app.super-productivity.com\" via the nextcloud app <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Priradený",
"AT": "Na",
"ATTACHMENTS": "Prílohy",
"CHANGED": "Zmenené",
"COMMENTS": "Komentáre",
"COMPONENTS": "Komponenty",
"DESCRIPTION": "Popis",
"LABELS": "Kategórie",
"LIST_OF_CHANGES": "Zoznam zmien",
"MARK_AS_CHECKED": "Označiť aktualizácie ako skontrolované",
"ON": "Na",
"RELATED": "Súvisiace",
"STATUS": "Stav",
"STORY_POINTS": "Príbehové body",
"SUB_TASKS": "Podúlohy",
"SUMMARY": "Súhrn",
"WORKLOG": "Pracovný denník",
"WRITE_A_COMMENT": "Napísať komentár"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kalendár \"{{calendarName}}\" nebol nájdený",
"CALENDAR_READ_ONLY": "CalDav: Kalendár \"{{calendarName}}\" je iba na čítanie",
@ -2265,24 +2234,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Naplánované úlohy s pripomienkou",
"START_TASK": "Start task and remove reminder"
},
"THEMES": {
"amber": "jantárová",
"blue": "modrá",
"blue-grey": "blue-grey",
"cyan": "tyrkysová",
"deep-orange": "tmavooranžová",
"deep-purple": "tmavofialová",
"green": "zelená",
"indigo": "indigová",
"light-blue": "svetlomodrá",
"light-green": "svetlozelená",
"lime": "lime",
"pink": "ružová",
"purple": "fialová",
"SELECT_THEME": "Vyberte tému",
"teal": "teal",
"yellow": "žltá"
},
"USER_PROFILES": {
"ACTIVE": "Aktívny",
"CANCEL": "Zrušiť",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Vänligen kontrollera den och avgör vad du ska göra.",
"SYNC_CONFLICT_TITLE": "En synkroniseringskonflikt uppstod"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Appen kör i bakgrunden för att möjliggöra synkronisering om sådan är aktiverad",
"NO_ACTIVE_TASKS": "Inga aktiva uppgifter",
"SYNCING": "Synkronisering"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ignorera",
@ -127,26 +116,6 @@
"HELP": "<p>Här kan du konfigurera SuperProductivity till att lista icke slutförda CalDav-uppgifter för ett specifikt projekt på panelen för uppgiftsskapande i den dagliga planeringsvyn. De kommer att listas som förslag och kommer att länka till uppgiften samt mer information om den.</p> <p>Dessutom kan du automatiskt lägga till och synkronisera alla icke slutförda uppgifter med din lista med eftersläpande uppgifter.</p><p>För att det ska fungera med Nextcloud i webbappen kan du behöva vitlista \"https://app.super-productivity.com\" via Nextcloud-appen <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Mottagare",
"AT": "vid",
"ATTACHMENTS": "Bilagor",
"CHANGED": "ändrad",
"COMMENTS": "Kommentarer",
"COMPONENTS": "Komponenter",
"DESCRIPTION": "Beskrivning",
"LABELS": "Kategorier",
"LIST_OF_CHANGES": "Lista över ändringar",
"MARK_AS_CHECKED": "Markera uppdateringar som avbockade",
"ON": "på",
"RELATED": "Relaterad",
"STATUS": "Status",
"STORY_POINTS": "Berättelsepoäng",
"SUB_TASKS": "Deluppgifter",
"SUMMARY": "Sammanfattning",
"WORKLOG": "arbetsloggen",
"WRITE_A_COMMENT": "Skriv en kommentar"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Kunde inte hitta kalendern \"{{calendarName}}\"",
"CALENDAR_READ_ONLY": "CalDav: Kalendern \"{{calendarName}}\" är skrivskyddad",
@ -2236,24 +2205,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Schemalagda uppgifter med starttid",
"START_TASK": "Starta uppgift och ta bort påminnelse"
},
"THEMES": {
"amber": "bärnsten",
"blue": "blått",
"blue-grey": "blågrått",
"cyan": "cyan",
"deep-orange": "djup orange",
"deep-purple": "mörklila",
"green": "grönt",
"indigo": "indigo",
"light-blue": "ljusblått",
"light-green": "ljusgrönt",
"lime": "lime",
"pink": "rosa",
"purple": "lila",
"SELECT_THEME": "Välj färgtema",
"teal": "kricka",
"yellow": "gult"
},
"V": {
"E_1TO10": "Ange ett värde mellan 1 och 10",
"E_DATETIME": "Det angivna värdet är inte ett datum och en tid!",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Lütfen kontrol edin ve ne yapacağınıza karar verin.",
"SYNC_CONFLICT_TITLE": "Bir senkronizasyon çakışması oldu."
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Eğer etkinse, senkronizasyonu kabul etmek için arka planda çalışır.",
"NO_ACTIVE_TASKS": "Aktif görevler yok",
"SYNCING": "Senkronize ediliyor"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Yoksay",
@ -132,26 +121,6 @@
"HELP": "<p>Burada, SuperProductivity'yi günlük planlama görünümündeki görev oluşturma panelinde belirli bir proje için tamamlanmamış CalDav yapılacak işleri listeleyecek şekilde yapılandırabilirsiniz. Öneriler olarak listelenecekler ve yapılacaklar için bir bağlantı ve bununla ilgili daha fazla bilgi sağlayacaklar.</p> <p>Ek olarak, tamamlanmamış tüm görevleri görev biriktirme listesine otomatik olarak ekleyebilir ve senkronize edebilirsiniz.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Atanan",
"AT": "üzerinde",
"ATTACHMENTS": "Ekler",
"CHANGED": "değiştirildi",
"COMMENTS": "Yorumlar",
"COMPONENTS": "Bileşenler",
"DESCRIPTION": "Açıklama",
"LABELS": "Kategoriler",
"LIST_OF_CHANGES": "Değişiklikler listesi",
"MARK_AS_CHECKED": "Güncellemeleri işaretlendi olarak işaretle",
"ON": "üzerinde",
"RELATED": "İlgili",
"STATUS": "Durum",
"STORY_POINTS": "Hikaye Puanları",
"SUB_TASKS": "Alt Görevler",
"SUMMARY": "Özet",
"WORKLOG": "Çalışma kaydı",
"WRITE_A_COMMENT": "Bir yorum yaz"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: \"{{calendarName}}\" takvimi bulunamadı",
"CALENDAR_READ_ONLY": "CalDav: \"{{calendarName}}\" takvimi salt okunur",
@ -2286,24 +2255,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Hatırlatıcılı zamanlanmış görevler",
"START_TASK": "Görevi şimdi başlat ve anımsatıcıyı kaldır"
},
"THEMES": {
"amber": "kehribar",
"blue": "mavi",
"blue-grey": "Mavi-gri",
"cyan": "camgöbeği",
"deep-orange": "koyu turuncu",
"deep-purple": "koyu mor",
"green": "yeşil",
"indigo": "çivit mavisi",
"light-blue": "açık mavi",
"light-green": "açık yeşil",
"lime": "kireç yeşili",
"pink": "pembe",
"purple": "mor",
"SELECT_THEME": "Tema seçin",
"teal": "turkuaz",
"yellow": "sarı"
},
"USER_PROFILES": {
"ACTIVE": "Aktif",
"CANCEL": "İptal",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "Перевірте та вирішіть, що робити.",
"SYNC_CONFLICT_TITLE": "Конфлікт синхронізації"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "Застосунок працює у фоновому режимі для синхронізації, якщо вона увімкнена",
"NO_ACTIVE_TASKS": "Немає активних завдань",
"SYNCING": "Синхронізація"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "Ігнорувати",
@ -112,26 +101,6 @@
"HELP": "<p>Тут ви можете налаштувати SuperProductivity для відображення незавершених завдань CalDav для конкретного проекту в панелі створення завдань у вікні щоденного планування. Вони будуть показані як пропозиції та надаватимуть посилання на завдання, а також додаткову інформацію про нього.</p> <p>Крім того, ви можете автоматично додавати та синхронізувати всі незавершені завдання до вашого беклогу завдань.</p><p>Щоб це працювало для nextcloud у веб-додатку, вам може знадобитися додати в білий список \"https://app.super-productivity.com\" через застосунок nextcloud <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Правонаступник",
"AT": "при",
"ATTACHMENTS": "Вкладення",
"CHANGED": "змінений",
"COMMENTS": "Коментарі",
"COMPONENTS": "Компоненти",
"DESCRIPTION": "Опис",
"LABELS": "Категорії",
"LIST_OF_CHANGES": "Перелік змін",
"MARK_AS_CHECKED": "Позначити оновлення як відмічені",
"ON": "на",
"RELATED": "Пов'язані",
"STATUS": "Статус",
"STORY_POINTS": "Сюжетні моменти",
"SUB_TASKS": "Підзавдання",
"SUMMARY": "Підсумок",
"WORKLOG": "Робочий журнал",
"WRITE_A_COMMENT": "Написати коментар"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Календар \"{{calendarName}}\" не знайдено",
"CALENDAR_READ_ONLY": "CalDav: Календар \"{{calendarName}}\" доступний лише для читання",
@ -1837,24 +1806,6 @@
"SCHEDULED_TASKS_WITH_TIME": "Заплановані завдання з нагадуванням",
"START_TASK": "Почати завдання і видалити нагадування"
},
"THEMES": {
"amber": "бурштиновий",
"blue": "синій",
"blue-grey": "синьо-сірий",
"cyan": "блакитний",
"deep-orange": "глибокий оранжевий",
"deep-purple": "глибокий фіолетовий",
"green": "зелений",
"indigo": "індиго",
"light-blue": "світло-синій",
"light-green": "світло-зелений",
"lime": "лаймовий",
"pink": "рожевий",
"purple": "фіолетовий",
"SELECT_THEME": "Вибрати тему",
"teal": "бірюзовий",
"yellow": "жовтий"
},
"V": {
"E_1TO10": "Будь ласка, введіть значення від 1 до 10",
"E_DATETIME": "Введене значення не є датою та часом!",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "請檢查並決定該怎麼做。",
"SYNC_CONFLICT_TITLE": "發生同步衝突"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "如果開啟,應用程式將會在背景運行以允許同步",
"NO_ACTIVE_TASKS": "沒有活動任務",
"SYNCING": "正在同步中"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "忽略",
@ -127,26 +116,6 @@
"HELP": "<p>Here you can configure SuperProductivity to list uncompleted CalDav todos for a specific project in the task creation panel in the daily planning view. They will be listed as suggestions and will provide a link to the todo as well as more information about it.</p> <p>In addition you can automatically add and sync all uncompleted todos to your task backlog.</p><p>To make it work for nextcloud in the webapp, you might need to whitelist \"https://app.super-productivity.com\" via the nextcloud app <a href='https://apps.nextcloud.com/apps/webapppassword'>webapppassword<a>.</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "Assignee",
"AT": "at",
"ATTACHMENTS": "Attachments",
"CHANGED": "changed",
"COMMENTS": "Comments",
"COMPONENTS": "Components",
"DESCRIPTION": "Description",
"LABELS": "Categories",
"LIST_OF_CHANGES": "List of changes",
"MARK_AS_CHECKED": "Mark updates as checked",
"ON": "on",
"RELATED": "Related",
"STATUS": "Status",
"STORY_POINTS": "Story Points",
"SUB_TASKS": "Subtasks",
"SUMMARY": "Summary",
"WORKLOG": "Worklog",
"WRITE_A_COMMENT": "Write a comment"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: Calendar \"{{calendarName}}\" not found",
"CALENDAR_READ_ONLY": "CalDav: Calendar \"{{calendarName}}\" is readonly",

View file

@ -1,15 +1,4 @@
{
"ANDROID": {
"NOTIFICATIONS": {
"SYNC_CONFLICT_MSG": "请检查并决定如何处理。",
"SYNC_CONFLICT_TITLE": "发生同步冲突"
},
"PERMANENT_NOTIFICATION_MSGS": {
"INITIAL": "应用正在后台运行,以便在启用同步时进行同步",
"NO_ACTIVE_TASKS": "没有活跃任务",
"SYNCING": "正在同步"
}
},
"APP": {
"B_INSTALL": {
"IGNORE": "忽略",
@ -132,26 +121,6 @@
"HELP": "<p>在这里,您可以将 SuperProductivity 配置为在每日规划视图的任务创建看板中列出特定项目的未完成 CalDav 待办事项。它们将列为建议,并提供指向待办事项的链接以及有关它的更多信息。</p> <p>此外,您还可以自动添加并同步所有未完成的待办事项到您的任务待办事项列表。</p><p>要在网页应用中为 nextcloud 启用此功能,您可能需要通过 nextcloud 应用 <a href='https://apps.nextcloud.com/apps/webapppassword '>webapppassword<a> 将 \"https://app.super-productivity.com \" 加入白名单。</p>",
"TITLE": "CalDav"
},
"ISSUE_CONTENT": {
"ASSIGNEE": "负责人",
"AT": "在",
"ATTACHMENTS": "附件",
"CHANGED": "已更改",
"COMMENTS": "评论",
"COMPONENTS": "组件",
"DESCRIPTION": "描述",
"LABELS": "类别",
"LIST_OF_CHANGES": "更改列表",
"MARK_AS_CHECKED": "将更新标记为已检查",
"ON": "在",
"RELATED": "相关",
"STATUS": "状态",
"STORY_POINTS": "故事点",
"SUB_TASKS": "子任务",
"SUMMARY": "摘要",
"WORKLOG": "工作日志",
"WRITE_A_COMMENT": "写评论"
},
"S": {
"CALENDAR_NOT_FOUND": "CalDav: 找不到日历 \"{{calendarName}}\"",
"CALENDAR_READ_ONLY": "CalDav: 日历 \"{{calendarName}}\" 是只读的",
@ -1762,10 +1731,9 @@
"FOCUS_MODE": {
"HELP": "专注模式打开一个无干扰的屏幕,以帮助您专注于当前任务。",
"L_ALWAYS_OPEN_FOCUS_MODE": "始终在跟踪时打开专注模式",
"L_SKIP_PREPARATION_SCREEN": "跳过准备屏幕(拉伸等",
"L_SKIP_PREPARATION_SCREEN": "跳过准备界面(火箭动画",
"L_IS_PLAY_TICK": "专注时播放滴答声",
"L_PAUSE_TRACKING_DURING_BREAK": "休息期间暂停任务跟踪",
"L_SKIP_PREPARATION_SCREEN": "跳过准备界面(火箭动画)",
"L_START_IN_BACKGROUND": "仅以横幅开始专注时段(无覆盖层)",
"TITLE": "专注模式"
},
@ -2292,24 +2260,6 @@
"SCHEDULED_TASKS_WITH_TIME": "有开始时间的计划任务",
"START_TASK": "开始任务并移除提醒"
},
"THEMES": {
"amber": "琥珀色",
"blue": "蓝色",
"blue-grey": "蓝灰色",
"cyan": "青色",
"deep-orange": "深橙色",
"deep-purple": "深紫色",
"green": "绿色",
"indigo": "靛蓝色",
"light-blue": "浅蓝色",
"light-green": "浅绿色",
"lime": "酸橙色",
"pink": "粉色",
"purple": "紫色",
"SELECT_THEME": "选择主题",
"teal": "蓝绿色",
"yellow": "黄色"
},
"USER_PROFILES": {
"ACTIVE": "当前使用",
"CANCEL": "取消",

View file

@ -0,0 +1,101 @@
/* eslint-env es6, node */
/**
* Removes specified unused translation keys from all language files.
* After running this, run `npm run int` to regenerate t.const.ts.
*
* Usage: node tools/cleanup-unused-translations.js
*/
const fs = require('fs');
const path = require('path');
const { globSync } = require('glob');
const I18N_DIR = path.join(__dirname, '../src/assets/i18n');
// Top-level sections to completely remove
const SECTIONS_TO_REMOVE = ['ANDROID', 'THEMES'];
// Nested paths to remove (will remove the last key in the path)
const NESTED_PATHS_TO_REMOVE = [
['F', 'CALDAV', 'ISSUE_CONTENT'], // Remove F.CALDAV.ISSUE_CONTENT
];
/**
* Recursively remove a nested key from an object
*/
function removeNestedKey(obj, pathParts) {
if (pathParts.length === 0) return false;
if (pathParts.length === 1) {
if (obj && pathParts[0] in obj) {
delete obj[pathParts[0]];
return true;
}
return false;
}
const [first, ...rest] = pathParts;
if (obj && typeof obj[first] === 'object') {
return removeNestedKey(obj[first], rest);
}
return false;
}
/**
* Remove specified keys from a JSON object
*/
function removeKeys(obj) {
let removedCount = 0;
// Remove top-level sections
for (const section of SECTIONS_TO_REMOVE) {
if (obj[section]) {
delete obj[section];
removedCount++;
}
}
// Remove nested keys
for (const pathParts of NESTED_PATHS_TO_REMOVE) {
if (removeNestedKey(obj, pathParts)) {
removedCount++;
}
}
return removedCount;
}
/**
* Process all JSON language files
*/
function processJsonFiles() {
const files = globSync('*.json', { cwd: I18N_DIR, absolute: true });
console.log(`Processing ${files.length} language files...\n`);
for (const file of files) {
const filename = path.basename(file);
const content = JSON.parse(fs.readFileSync(file, 'utf8'));
const removed = removeKeys(content);
if (removed > 0) {
fs.writeFileSync(file, JSON.stringify(content, null, 2) + '\n', 'utf8');
console.log(`${filename}: removed ${removed} section(s)`);
} else {
console.log(`${filename}: no changes needed`);
}
}
}
// Main
console.log('=== Cleaning up unused translations ===\n');
console.log('Removing:');
console.log(' - ANDROID.* (5 keys)');
console.log(' - THEMES.* (17 keys)');
console.log(' - F.CALDAV.ISSUE_CONTENT.* (12 keys)');
console.log('');
processJsonFiles();
console.log('\n=== Done! ===');
console.log('\nNow run `npm run int` to regenerate t.const.ts');

View file

@ -0,0 +1,94 @@
/* eslint-env es6, node */
/**
* Finds unused translation keys by scanning the codebase.
*
* Usage: node tools/find-unused-translations.js
*
* Detects both patterns:
* - T.KEY.PATH (preferred, type-safe)
* - 'KEY.PATH' or "KEY.PATH" (string literals, legacy)
*/
const fs = require('fs');
const path = require('path');
const { globSync } = require('glob');
const TRANSLATION_SRC = path.join(__dirname, '../src/assets/i18n/en.json');
const SRC_DIR = path.join(__dirname, '../src');
/**
* Recursively extract all flat keys from nested translation object
* e.g., { A: { B: "val" } } -> ["A.B"]
*/
function extractKeys(obj, prefix = '') {
let keys = [];
for (const [key, value] of Object.entries(obj)) {
const fullKey = prefix ? `${prefix}.${key}` : key;
if (typeof value === 'object' && value !== null) {
keys = keys.concat(extractKeys(value, fullKey));
} else {
keys.push(fullKey);
}
}
return keys;
}
/**
* Load all source file contents into a single string for fast searching
*/
function loadAllSourceContent() {
const files = globSync('**/*.{ts,html}', {
cwd: SRC_DIR,
ignore: ['**/t.const.ts', '**/node_modules/**'],
absolute: true,
});
console.log(`Scanning ${files.length} source files...`);
return files.map((f) => fs.readFileSync(f, 'utf8')).join('\n');
}
/**
* Check if a translation key is used in the codebase
* Detects both T.KEY.PATH and 'KEY.PATH' / "KEY.PATH" patterns
*/
function isKeyUsed(key, content) {
// Pattern 1: T.KEY.PATH (preferred)
const tPattern = `T.${key}`;
if (content.includes(tPattern)) {
return true;
}
// Pattern 2: 'KEY.PATH' (string literal with single quotes)
const singleQuotePattern = `'${key}'`;
if (content.includes(singleQuotePattern)) {
return true;
}
// Pattern 3: "KEY.PATH" (string literal with double quotes)
const doubleQuotePattern = `"${key}"`;
if (content.includes(doubleQuotePattern)) {
return true;
}
return false;
}
// Main
const translations = JSON.parse(fs.readFileSync(TRANSLATION_SRC, 'utf8'));
const allKeys = extractKeys(translations);
const allContent = loadAllSourceContent();
console.log(`Checking ${allKeys.length} translation keys...\n`);
const unused = allKeys.filter((key) => !isKeyUsed(key, allContent));
if (unused.length === 0) {
console.log('All translation keys are used!');
} else {
console.log(`=== Unused translations (${unused.length}) ===\n`);
unused.forEach((k) => console.log(k));
console.log(`\nTotal: ${unused.length} unused keys out of ${allKeys.length}`);
}
process.exit(unused.length > 0 ? 1 : 0);