Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/src/i18n/i18n-locales.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export const LOCALES = {
mode: 'overrides',
native: 'Deutsch',
nonLatin: false,
translatedKeyFloor: 1468,
translatedKeyFloor: 2474,
},
ru: {
loadSync: () => require('./locales/ru') as typeof import('./locales/ru'),
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/i18n/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ describe('getLocaleCoverageTier', () => {
it('calls a locale with a low key floor partial', () => {
// nl is the worst of them (~26% of en at time of writing).
expect(getLocaleCoverageTier('nl')).toBe('partial');
expect(getLocaleCoverageTier('de')).toBe('partial');
});

it('treats English and unknown codes as full', () => {
Expand All @@ -47,6 +46,8 @@ describe('getLocaleCoverageTier', () => {
// vi sits just under 'all' but far above the ceiling; if this ever flips,
// a floor moved and the label follows it automatically.
expect(getLocaleCoverageTier('vi')).toBe('full');
// de reached full key parity via override translations without an 'all' commitment.
expect(getLocaleCoverageTier('de')).toBe('full');
});
});

Expand Down
35 changes: 35 additions & 0 deletions packages/core/src/i18n/locale-quality.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,42 @@ export const allowedEnglishMirrorTerms = [

export const allowedEnglishMirrorKeysByLocale: Record<string, readonly string[]> = {
de: [
// German shares these labels with English identically: loanwords and
// internationalisms already standard in German UI copy ("Status", "Details",
// "Version", "System", "Port", "Standard", "Optional", "Parallel", "Routine",
// "Pause", "Passphrase", "Backend"), color names spelled the same, the "Name"
// field label, and brand/technology terms kept in Latin ("E-Ink", "Sepia",
// "Screenshot", "Agenda").
'keybindings.style.standard',
'bulk.organizeStatus',
'common.pause',
'context.energy.routine',
'list.details',
'projects.colorCyan',
'projects.colorIndigo',
'projects.colorOrange',
'projects.colorPink',
'projects.parallel',
'projects.statusLabel',
'quickAdd.pastedImageTitle',
'settings.calendarMobile.optional',
'settings.calendarName',
'settings.dropboxStatus',
'settings.eink',
'settings.emailCapturePort',
'settings.externalCalendarName',
'settings.gtdMobile.standard',
'settings.localApiPort',
'settings.projectFlowParallel',
'settings.sepia',
'settings.syncEncryptionPassphrase',
'settings.syncHistoryBackend',
'settings.syncHistoryDetails',
'settings.system',
'settings.version',
'tab.agenda',
'taskEdit.details',
'taskEdit.statusLabel',
],
it: [
'keybindings.style.standard',
Expand Down
Loading