refactor(infra): directory structure (#4615)
This commit is contained in:
1
packages/frontend/i18n/.gitignore
vendored
Normal file
1
packages/frontend/i18n/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
lib
|
||||
69
packages/frontend/i18n/README.md
Normal file
69
packages/frontend/i18n/README.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# i18n
|
||||
|
||||
## Usages
|
||||
|
||||
- Update missing translations into the base resources, a.k.a the `src/resources/en.json`
|
||||
- Replace literal text with translation keys
|
||||
|
||||
```tsx
|
||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||
import { LOCALES, useI18N } from '@affine/i18n';
|
||||
// src/resources/en.json
|
||||
// {
|
||||
// 'Text': 'some text',
|
||||
// 'Switch to language': 'Switch to {{language}}', // <- you can interpolation by curly brackets
|
||||
// };
|
||||
|
||||
const App = () => {
|
||||
const t = useAFFiNEI18N();
|
||||
const i18n = useI18N();
|
||||
const changeLanguage = (language: string) => {
|
||||
i18n.changeLanguage(language);
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div>{t['Workspace Settings']()}</div>
|
||||
<>
|
||||
{LOCALES.map(option => {
|
||||
return (
|
||||
<button
|
||||
key={option.name}
|
||||
onClick={() => {
|
||||
changeLanguage(option.tag);
|
||||
}}
|
||||
>
|
||||
{option.originalName}
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
</>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
```
|
||||
|
||||
## How the i18n workflow works?
|
||||
|
||||
- When the `src/resources/en.json`(base language) updated and merged to the develop branch, will trigger the `languages-sync` action.
|
||||
- The `languages-sync` action will check the base language and add missing translations to the Tolgee platform.
|
||||
- This way, partners from the community can update the translations.
|
||||
|
||||
## How to sync translations manually
|
||||
|
||||
- Set token as environment variable
|
||||
|
||||
```shell
|
||||
export TOLGEE_API_KEY=tgpak_XXXXXXX
|
||||
```
|
||||
|
||||
- Run the `sync-languages:check` to check all languages
|
||||
- Run the `sync-languages` script to add new keys to the Tolgee platform
|
||||
- Run the `download-resources` script to download the latest full-translation translation resources from the Tolgee platform
|
||||
|
||||
## References
|
||||
|
||||
- [AFFiNE | Tolgee](https://i18n.affine.pro/)
|
||||
- [Tolgee Documentation](https://tolgee.io/docs/)
|
||||
- [i18next](https://www.i18next.com/)
|
||||
- [react-i18next](https://react.i18next.com/)
|
||||
15
packages/frontend/i18n/build.mjs
Normal file
15
packages/frontend/i18n/build.mjs
Normal file
@@ -0,0 +1,15 @@
|
||||
import { runCli } from '@magic-works/i18n-codegen';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
runCli(
|
||||
{
|
||||
config: fileURLToPath(
|
||||
new URL('../../../.i18n-codegen.json', import.meta.url)
|
||||
),
|
||||
watch: false,
|
||||
},
|
||||
error => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
}
|
||||
);
|
||||
14
packages/frontend/i18n/dev.mjs
Normal file
14
packages/frontend/i18n/dev.mjs
Normal file
@@ -0,0 +1,14 @@
|
||||
import { runCli } from '@magic-works/i18n-codegen';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
runCli(
|
||||
{
|
||||
config: fileURLToPath(
|
||||
new URL('../../../.i18n-codegen.json', import.meta.url)
|
||||
),
|
||||
watch: true,
|
||||
},
|
||||
error => {
|
||||
console.error(error);
|
||||
}
|
||||
);
|
||||
41
packages/frontend/i18n/package.json
Normal file
41
packages/frontend/i18n/package.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "@affine/i18n",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./hooks": "./src/i18n-generated"
|
||||
},
|
||||
"publishConfig": {
|
||||
"main": "dist/src/index.js",
|
||||
"types": "dist/src/index.d.ts",
|
||||
"exports": {
|
||||
".": "./dist/src/index.js"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node build.mjs",
|
||||
"dev": "node dev.mjs",
|
||||
"sync-languages": "ts-node-esm -P ./tsconfig.node.json src/scripts/sync.ts",
|
||||
"sync-languages:check": "yarn run sync-languages --check",
|
||||
"download-resources": "ts-node-esm -P ./tsconfig.node.json src/scripts/download.ts"
|
||||
},
|
||||
"keywords": [],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/toeverything/AFFiNE.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"i18next": "^23.5.1",
|
||||
"react-i18next": "^13.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.18.5",
|
||||
"@types/prettier": "^3.0.0",
|
||||
"prettier": "^3.0.3",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"version": "0.10.0-canary.1"
|
||||
}
|
||||
17
packages/frontend/i18n/project.json
Normal file
17
packages/frontend/i18n/project.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "i18n",
|
||||
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
|
||||
"projectType": "library",
|
||||
"sourceRoot": "packages/frontend/i18n/src",
|
||||
"targets": {
|
||||
"build": {
|
||||
"outputs": ["{workspaceRoot}/src/i18n-generated.ts"],
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/frontend/i18n",
|
||||
"command": "node ./build.mjs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": ["infra"]
|
||||
}
|
||||
105
packages/frontend/i18n/src/index.ts
Normal file
105
packages/frontend/i18n/src/index.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
import type { i18n, Resource } from 'i18next';
|
||||
import i18next from 'i18next';
|
||||
import {
|
||||
I18nextProvider,
|
||||
initReactI18next,
|
||||
Trans,
|
||||
useTranslation as useRootTranslation,
|
||||
} from 'react-i18next';
|
||||
|
||||
import { LOCALES } from './resources';
|
||||
import type en_US from './resources/en.json';
|
||||
|
||||
declare module 'i18next' {
|
||||
// Refs: https://www.i18next.com/overview/typescript#argument-of-type-defaulttfuncreturn-is-not-assignable-to-parameter-of-type-xyz
|
||||
interface CustomTypeOptions {
|
||||
returnNull: false;
|
||||
}
|
||||
}
|
||||
|
||||
// const localStorage = {
|
||||
// getItem() {
|
||||
// return undefined;
|
||||
// },
|
||||
// setItem() {},
|
||||
// };
|
||||
// See https://react.i18next.com/latest/typescript
|
||||
declare module 'react-i18next' {
|
||||
interface CustomTypeOptions {
|
||||
// custom namespace type if you changed it
|
||||
// defaultNS: 'ns1';
|
||||
// custom resources type
|
||||
allowObjectInHTMLChildren: true;
|
||||
resources: {
|
||||
en: typeof en_US;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const STORAGE_KEY = 'i18n_lng';
|
||||
|
||||
export { I18nextProvider, LOCALES, Trans };
|
||||
export function useI18N() {
|
||||
const { i18n } = useRootTranslation();
|
||||
return i18n;
|
||||
}
|
||||
|
||||
const resources = LOCALES.reduce<Resource>(
|
||||
(acc, { tag, res }) => ({ ...acc, [tag]: { translation: res } }),
|
||||
{}
|
||||
);
|
||||
|
||||
const fallbackLng = 'en';
|
||||
const standardizeLocale = (language: string) => {
|
||||
if (language === 'zh-CN' || language === 'zh' || language === 'zh-Hans') {
|
||||
language = 'zh-Hans';
|
||||
} else if (language.slice(0, 2).toLowerCase() === 'zh') {
|
||||
language = 'zh-Hant';
|
||||
}
|
||||
if (LOCALES.find(locale => locale.tag === language)) return language;
|
||||
if (
|
||||
LOCALES.find(locale => locale.tag === language.slice(0, 2).toLowerCase())
|
||||
) {
|
||||
return language.slice(0, 2).toLowerCase();
|
||||
}
|
||||
|
||||
return fallbackLng;
|
||||
};
|
||||
|
||||
export const createI18n = () => {
|
||||
const i18n = i18next.createInstance();
|
||||
i18n
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
lng: 'en',
|
||||
fallbackLng,
|
||||
debug: false,
|
||||
resources,
|
||||
interpolation: {
|
||||
escapeValue: false, // not needed for react as it escapes by default
|
||||
},
|
||||
})
|
||||
.then(() => {
|
||||
console.info('i18n init success');
|
||||
})
|
||||
.catch(() => {
|
||||
console.error('i18n init failed');
|
||||
});
|
||||
|
||||
i18n.on('languageChanged', lng => {
|
||||
localStorage.setItem(STORAGE_KEY, lng);
|
||||
});
|
||||
return i18n;
|
||||
};
|
||||
export function setUpLanguage(i: i18n) {
|
||||
let language;
|
||||
const localStorageLanguage = localStorage.getItem(STORAGE_KEY);
|
||||
if (localStorageLanguage) {
|
||||
language = standardizeLocale(localStorageLanguage);
|
||||
} else {
|
||||
language = standardizeLocale(navigator.language);
|
||||
}
|
||||
return i.changeLanguage(language);
|
||||
}
|
||||
|
||||
// const I18nProvider = I18nextProvider;
|
||||
355
packages/frontend/i18n/src/resources/de.json
Normal file
355
packages/frontend/i18n/src/resources/de.json
Normal file
@@ -0,0 +1,355 @@
|
||||
{
|
||||
"Access level": "Zugriffsberechtigung",
|
||||
"Add a subpage inside": "Unterseite hinzufügen",
|
||||
"Add Workspace": "Workspace hinzufügen",
|
||||
"Add Workspace Hint": "Auswählen, was du schon hast",
|
||||
"All changes are saved locally": "Alle Änderungen sind lokal gespeichert",
|
||||
"All data has been stored in the cloud": "Alle Daten wurden in der Cloud gespeichert.",
|
||||
"Back to Quick Search": "Zurück zur Schnellsuche",
|
||||
"Change avatar hint": "Avatar von allen Mitgliedern ändern.",
|
||||
"Change workspace name hint": "Name von allen Mitgliedern ändern.",
|
||||
"Check Our Docs": "Sieh dir unsere Dokumentation an",
|
||||
"Cloud Workspace Description": "Alle Daten werden synchronisiert und zu dem AffiNE account <1>{{email}}</1> gespeichert",
|
||||
"Collaboration": "Zusammenarbeit",
|
||||
"Collaboration Description": "Für die Zusammenarbeit mit anderen Nutzern werden die AFFiNE Cloud Services benötigt.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "Automatisch nach Updates suchen",
|
||||
"com.affine.aboutAFFiNE.changelog.title": "Erfahre was neu ist!",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "Neue Version ist verfügbar",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "Nach Updates suchen",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNE Community",
|
||||
"com.affine.aboutAFFiNE.contact.title": "Kontaktiere uns",
|
||||
"com.affine.aboutAFFiNE.contact.website": "Offizielle Webseite",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "Datenschutz",
|
||||
"com.affine.aboutAFFiNE.legal.tos": "Nutzungsbedingungen",
|
||||
"com.affine.aboutAFFiNE.subtitle": "Information über AFFiNE",
|
||||
"com.affine.aboutAFFiNE.title": "Über AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "App Version",
|
||||
"com.affine.aboutAFFiNE.version.title": "Version",
|
||||
"com.affine.appearanceSettings.color.title": "Farb Schema",
|
||||
"com.affine.appearanceSettings.date.title": "Datum",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "Datumsformat",
|
||||
"com.affine.appearanceSettings.font.title": "Schriftart",
|
||||
"com.affine.appearanceSettings.theme.title": "Thema",
|
||||
"com.affine.appUpdater.downloading": "Herunterladen",
|
||||
"com.affine.appUpdater.installUpdate": "Neustart zum Installieren des Updates",
|
||||
"com.affine.appUpdater.openDownloadPage": "Download-Seite öffnen",
|
||||
"com.affine.appUpdater.updateAvailable": "Update verfügbar",
|
||||
"com.affine.appUpdater.whatsNew": "Erfahre was neu ist!",
|
||||
"com.affine.backButton": "Zurück zum Start",
|
||||
"com.affine.banner.content": "Dir gefällt die Demo? <1>Lade den AFFiNE Client herunter</1>, um das volle Potenzial zu entdecken.",
|
||||
"com.affine.brand.affineCloud": "AFFiNE Cloud",
|
||||
"com.affine.cloudTempDisable.description": "Wir aktualisieren den AFFiNE Cloud Service und er ist vorübergehend auf dem Client nicht verfügbar. Wenn du auf dem Laufenden bleiben und über die Verfügbarkeit informiert werden möchtest, kannst du das <1>AFFiNE Cloud Anmeldeformular</1> ausfüllen.",
|
||||
"com.affine.cloudTempDisable.title": "Die AFFiNE Cloud wird gerade aufgerüstet.",
|
||||
"com.affine.collection-bar.action.tooltip.delete": "Löschen",
|
||||
"com.affine.collection-bar.action.tooltip.edit": "Bearbeiten",
|
||||
"com.affine.confirmModal.button.cancel": "Abbrechen",
|
||||
"com.affine.currentYear": "Aktuelles Jahr",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "Workspace verlassen",
|
||||
"com.affine.draw_with_a_blank_whiteboard": "Zeichnen mit einem leeren Whiteboard",
|
||||
"com.affine.earlier": "Früher",
|
||||
"com.affine.editCollection.button.cancel": "Abbrechen",
|
||||
"com.affine.editCollection.button.create": "Erstellen",
|
||||
"com.affine.editCollection.save": "Speichern",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "Abbrechen",
|
||||
"com.affine.export.error.message": "Bitte versuche es später wieder.",
|
||||
"com.affine.export.success.title": "Erfolgreich exportiert",
|
||||
"com.affine.favoritePageOperation.add": "Zu Favoriten hinzufügen",
|
||||
"com.affine.favoritePageOperation.remove": "Von Favoriten entfernen",
|
||||
"com.affine.filter": "Filter",
|
||||
"com.affine.filter.after": "danach",
|
||||
"com.affine.filter.before": "bevor",
|
||||
"com.affine.filter.false": "falsch",
|
||||
"com.affine.filter.is": "ist",
|
||||
"com.affine.filter.is empty": "ist leer",
|
||||
"com.affine.filter.is not empty": "ist nicht leer",
|
||||
"com.affine.filter.is-favourited": "Favorisiert",
|
||||
"com.affine.filter.true": "wahr",
|
||||
"com.affine.header.option.add-tag": "Tag hinzufügen",
|
||||
"com.affine.header.option.duplicate": "Duplizieren",
|
||||
"com.affine.helpIsland.contactUs": "Kontaktiere uns",
|
||||
"com.affine.helpIsland.gettingStarted": "Erste Schritte",
|
||||
"com.affine.helpIsland.helpAndFeedback": "Hilfe und Feedback",
|
||||
"com.affine.import_file": "Markdown/Notion Unterstützung",
|
||||
"com.affine.inviteModal.button.cancel": "Abbrechen",
|
||||
"com.affine.keyboardShortcuts.bodyText": "Haupttext",
|
||||
"com.affine.keyboardShortcuts.bold": "Fett",
|
||||
"com.affine.keyboardShortcuts.cancel": "Abbrechen",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "Code-Block",
|
||||
"com.affine.keyboardShortcuts.divider": "Trenner",
|
||||
"com.affine.keyboardShortcuts.goBack": "Zurück gehen",
|
||||
"com.affine.keyboardShortcuts.goForward": "Vorwärts gehen",
|
||||
"com.affine.keyboardShortcuts.hand": "Hand",
|
||||
"com.affine.keyboardShortcuts.heading": "Überschrift {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "Bild",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "Einzug vergrößern",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "Inline-Code",
|
||||
"com.affine.keyboardShortcuts.italic": "Kursiv",
|
||||
"com.affine.keyboardShortcuts.link": "Hyperlink (mit ausgewähltem Text)",
|
||||
"com.affine.keyboardShortcuts.newPage": "Neue Seite",
|
||||
"com.affine.keyboardShortcuts.pen": "Stift (bald verfügbar)",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "Schnelle Suche",
|
||||
"com.affine.keyboardShortcuts.redo": "Wiederholen",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "Einzug verringern",
|
||||
"com.affine.keyboardShortcuts.select": "Auswählen",
|
||||
"com.affine.keyboardShortcuts.selectAll": "Alle auswählen",
|
||||
"com.affine.keyboardShortcuts.shape": "Form",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "Durchgestrichen",
|
||||
"com.affine.keyboardShortcuts.text": "Text (bald verfügbar)",
|
||||
"com.affine.keyboardShortcuts.title": "Tastaturkürzel",
|
||||
"com.affine.keyboardShortcuts.underline": "Unterstreichen",
|
||||
"com.affine.keyboardShortcuts.undo": "Rückgängig",
|
||||
"com.affine.last30Days": "Letzten 30 Tage",
|
||||
"com.affine.last7Days": "Letzten 7 Tage",
|
||||
"com.affine.lastMonth": "Letzter Monat",
|
||||
"com.affine.lastWeek": "Letzte Woche",
|
||||
"com.affine.lastYear": "Letztes Jahr",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}} wird in den Papierkorb verschoben",
|
||||
"com.affine.moveToTrash.confirmModal.title": "Seite löschen?",
|
||||
"com.affine.moveToTrash.title": "In Papierkorb verschieben",
|
||||
"com.affine.nameWorkspace.button.cancel": "Abbrechen",
|
||||
"com.affine.nameWorkspace.button.create": "Erstellen",
|
||||
"com.affine.nameWorkspace.description": "Ein Workspace ist dein virtueller Raum zum Erfassen, Gestalten und Planen, ob allein oder gemeinsam im Team.",
|
||||
"com.affine.nameWorkspace.placeholder": "Name vom Workspace ändern",
|
||||
"com.affine.nameWorkspace.title": "Workspace benennen",
|
||||
"com.affine.new_edgeless": "Neuer Edgeless",
|
||||
"com.affine.new_import": "Importieren",
|
||||
"com.affine.notFoundPage.backButton": "Zurück zum Start",
|
||||
"com.affine.notFoundPage.title": "404 - Seite nicht gefunden",
|
||||
"com.affine.onboarding.title1": "Hyperfusion von Whiteboard und Dokumenten",
|
||||
"com.affine.onboarding.title2": "Intuitive und robuste, blockbasierte Bearbeitung",
|
||||
"com.affine.onboarding.videoDescription1": "Wechsle mühelos zwischen dem Seitenmodus für die strukturierte Dokumentenerstellung und dem Whiteboard-Modus für den Ausdruck kreativer Ideen in freier Form.",
|
||||
"com.affine.onboarding.videoDescription2": "Verwende eine modulare Schnittstelle, um strukturierte Dokumente zu erstellen, indem du Textblöcke, Bilder und andere Inhalte einfach per Drag-and-drop anordnen kannst.",
|
||||
"com.affine.openPageOperation.newTab": "In neuem Tab öffnen",
|
||||
"com.affine.pageMode.all": "Alle",
|
||||
"com.affine.pageMode.edgeless": "Edgeless",
|
||||
"com.affine.pageMode.page": "Seite",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "Abbrechen",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "Deaktivieren",
|
||||
"com.affine.publicLinkDisableModal.description": "Wenn du diesen öffentlichen Link deaktivierst, können andere Personen mit diesem Link nicht mehr auf diese Seite zugreifen.",
|
||||
"com.affine.publicLinkDisableModal.title": "Öffentlichen Link deaktivieren ?",
|
||||
"com.affine.rootAppSidebar.favorites": "Favoriten",
|
||||
"com.affine.rootAppSidebar.others": "Andere",
|
||||
"com.affine.setDBLocation.button.customize": "Anpassen",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "Standard-Speicherort",
|
||||
"com.affine.setDBLocation.description": "Wähle den Ort, an dem du deinen Workspace erstellen möchten. Die Daten vom Workspace werden standardmäßig lokal gespeichert.",
|
||||
"com.affine.setDBLocation.title": "Datenbankstandort festlegen",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "Standardmäßig wird unter {{location}} gespeichert.",
|
||||
"com.affine.setSyncingMode.button.continue": "Fortfahren",
|
||||
"com.affine.setSyncingMode.cloud": "Geräteübergreifende Synchronisierung mit AFFiNE Cloud",
|
||||
"com.affine.setSyncingMode.deviceOnly": "Nur auf dem aktuellen Gerät verwenden",
|
||||
"com.affine.setSyncingMode.title.added": "Erfolgreich hinzugefügt",
|
||||
"com.affine.setSyncingMode.title.created": "Erfolgreich erstellt",
|
||||
"com.affine.settings.remove-workspace": "Workspace entfernen",
|
||||
"com.affine.settingSidebar.settings.general": "Generelles",
|
||||
"com.affine.settingSidebar.settings.workspace": "Workspace",
|
||||
"com.affine.settingSidebar.title": "Einstellungen",
|
||||
"com.affine.shortcutsTitle.edgeless": "Edgeless",
|
||||
"com.affine.shortcutsTitle.general": "Generelles",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown Syntax",
|
||||
"com.affine.shortcutsTitle.page": "Seite",
|
||||
"com.affine.sidebarSwitch.collapse": "Seitenleiste einklappen",
|
||||
"com.affine.sidebarSwitch.expand": "Seitenleiste ausklappen",
|
||||
"com.affine.themeSettings.dark": "dunkel",
|
||||
"com.affine.themeSettings.light": "hell",
|
||||
"com.affine.themeSettings.system": "system",
|
||||
"com.affine.toastMessage.addedFavorites": "Zu Favoriten hinzugefügt",
|
||||
"com.affine.toastMessage.edgelessMode": "Edgeless-Modus",
|
||||
"com.affine.toastMessage.movedTrash": "In Papierkorb verschoben",
|
||||
"com.affine.toastMessage.pageMode": "Seitenmodus",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "Dauerhaft gelöscht",
|
||||
"com.affine.toastMessage.removedFavorites": "Von Favoriten entfernt",
|
||||
"com.affine.toastMessage.restored": "{{title}} wiederhergestellt",
|
||||
"com.affine.toastMessage.successfullyDeleted": "Erfolgreich gelöscht",
|
||||
"com.affine.today": "Heute",
|
||||
"com.affine.trashOperation.delete": "Löschen",
|
||||
"com.affine.trashOperation.delete.description": "Das Löschen kann nicht rückgängig gemacht werden. Fortfahren?",
|
||||
"com.affine.trashOperation.delete.title": "Dauerhaft löschen",
|
||||
"com.affine.trashOperation.deletePermanently": "Dauerhaft löschen",
|
||||
"com.affine.trashOperation.restoreIt": "Wiederherstellen",
|
||||
"com.affine.workspace.cannot-delete": "Du kannst den letzten Workspace nicht löschen",
|
||||
"com.affine.workspaceDelete.button.cancel": "Abbrechen",
|
||||
"com.affine.workspaceDelete.button.delete": "Löschen",
|
||||
"com.affine.workspaceDelete.description": "Workspace <1>{{workspace}}</1> wird gelöscht und der Inhalt wird verloren sein. Dies kann nicht rückgängig gemacht werden.",
|
||||
"com.affine.workspaceDelete.description2": "Das Löschen von <1>{{workspace}}</1> wird sowohl lokale als auch Daten in der Cloud löschen. Dies kann nicht rückgängig gemacht werden.",
|
||||
"com.affine.workspaceDelete.placeholder": "Bitte zur Bestätigung den Workspace-Namen eingeben",
|
||||
"com.affine.workspaceDelete.title": "Workspace löschen",
|
||||
"com.affine.workspaceLeave.button.cancel": "Abbrechen",
|
||||
"com.affine.workspaceLeave.button.leave": "Verlassen",
|
||||
"com.affine.workspaceLeave.description": "Nach dem Verlassen hast du keinen Zugriff mehr auf die Inhalte dieses Workspaces.",
|
||||
"com.affine.workspaceSubPath.all": "Alle Seiten",
|
||||
"com.affine.workspaceSubPath.trash": "Papierkorb",
|
||||
"com.affine.workspaceType.cloud": "Cloud Workspace",
|
||||
"com.affine.workspaceType.joined": "Workspace beigetreten",
|
||||
"com.affine.workspaceType.local": "Lokaler Workspace",
|
||||
"com.affine.workspaceType.offline": "Offline verfügbar",
|
||||
"com.affine.write_with_a_blank_page": "Schreibe mit einer leeren Seite",
|
||||
"com.affine.yesterday": "Gestern",
|
||||
"Confirm": "Bestätigen",
|
||||
"Connector": "Verbindung (bald verfügbar)",
|
||||
"Continue with Google": "Mit Google fortfahren",
|
||||
"Convert to ": "Konvertiere zu",
|
||||
"Copied link to clipboard": "Link in die Zwischenablage kopiert",
|
||||
"Copy": "Kopieren",
|
||||
"Copy Link": "Link kopieren",
|
||||
"core": "Core",
|
||||
"Create": "Erstellen",
|
||||
"Create Or Import": "Erstellen oder importieren",
|
||||
"Create Shared Link Description": "Erstelle einen Link, den du leicht mit jedem teilen kannst.",
|
||||
"Create your own workspace": "Eigenen Workspace erstellen",
|
||||
"Created": "Erstellt",
|
||||
"Created with": "Erstellt mit",
|
||||
"Data sync mode": "Daten-Sync Modus",
|
||||
"DB_FILE_ALREADY_LOADED": "Datenbankdatei bereits geladen",
|
||||
"DB_FILE_INVALID": "Ungültige Datenbankdatei",
|
||||
"DB_FILE_PATH_INVALID": "Pfad der Datenbankdatei ungültig",
|
||||
"Delete": "Löschen",
|
||||
"Delete Member?": "Mitglied löschen?",
|
||||
"Delete Workspace Label Hint": "Wenn dieser Workspace gelöscht wird, wird sein gesamter Inhalt für alle Benutzer dauerhaft gelöscht. Niemand wird in der Lage sein, den Inhalt dieses Workspaces wiederherzustellen.",
|
||||
"Delete Workspace placeholder": "Bitte gib als Bestätigung \"Delete\" ein",
|
||||
"Disable": "Deaktivieren",
|
||||
"Disable Public Link": "Öffentlichen Link deaktivieren",
|
||||
"Disable Public Sharing": "Öffentliche Freigabe deaktivieren",
|
||||
"Download all data": "Alle Daten herunterladen",
|
||||
"Download core data": "Core Daten herunterladen",
|
||||
"Download data": "{{CoreOrAll}} Daten herunterladen",
|
||||
"Download data Description1": "Es verbraucht mehr Speicherplatz auf deinem Gerät.",
|
||||
"Download data Description2": "Es verbraucht nur wenig Speicherplatz auf deinem Gerät.",
|
||||
"Edit": "Bearbeiten",
|
||||
"Edit Filter": "Filter bearbeiten",
|
||||
"emptyAllPages": "Dieser Workspace ist leer. Erstelle eine Seite, um sie zu bearbeiten.",
|
||||
"emptyFavorite": "Klicke auf \"Zu Favoriten hinzufügen\" und die Seite wird hier erscheinen",
|
||||
"emptySharedPages": "Freigegebene Seiten werden hier angezeigt.",
|
||||
"emptyTrash": "Klicke auf \"In Papierkorb verschieben\" und die Seite wird hier erscheinen.",
|
||||
"Enable": "Aktivieren",
|
||||
"Enable AFFiNE Cloud": "AFFiNE Cloud aktivieren",
|
||||
"Enable AFFiNE Cloud Description": "Falls aktiviert, werden die Daten in diesem Workspace via der AFFiNE Cloud gesichert und synchronisiert.",
|
||||
"Enabled success": "Aktivierung erfolgreich",
|
||||
"Exclude from filter": "Von Filter ausschließen",
|
||||
"Export": "Exportieren",
|
||||
"Export AFFiNE backup file": "AFFiNE-Backup als Datei exportieren",
|
||||
"Export Description": "Du kannst alle Workspace Daten zur Sicherung exportieren, und die exportierten Daten können wieder importiert werden.",
|
||||
"Export Shared Pages Description": "Laden eine statische Kopie dieser Seite herunter, um sie mit anderen zu teilen.",
|
||||
"Export success": "Export erfolgreich",
|
||||
"Export to HTML": "Zu HTML exportieren",
|
||||
"Export to Markdown": "Zu Markdown exportieren",
|
||||
"Export to PDF": "Zu PDF exportieren",
|
||||
"Export to PNG": "Zu PNG exportieren",
|
||||
"Export Workspace": "Das Exportieren von Workspace <1>{{workspace}}</1> kommt bald",
|
||||
"Failed to publish workspace": "Workspace Veröffentlichung fehlgeschlagen",
|
||||
"Favorite": "Favorit",
|
||||
"Favorite pages for easy access": "Favoriten-Seiten für schnellen Zugriff",
|
||||
"Favorited": "Favorisiert",
|
||||
"FILE_ALREADY_EXISTS": "Datei existiert bereits",
|
||||
"Find 0 result": "0 Ergebnisse gefunden",
|
||||
"Find results": "{{number}} Ergebnis(se) gefunden",
|
||||
"Force Sign Out": "Abmeldung erwingen",
|
||||
"Get in touch!": "Kontaktiere uns!",
|
||||
"Get in touch! Join our communities": "Nimm teil! Treten Sie unseren Communities bei.",
|
||||
"Get in touch! Join our communities.": "Bleib mit uns in Kontakt und trete unseren Communitys bei!",
|
||||
"Got it": "Verstanden",
|
||||
"How is AFFiNE Alpha different?": "Worin unterscheidet sich AFFiNE Alpha?",
|
||||
"Import": "Importieren",
|
||||
"Info": "Info",
|
||||
"Invite": "Einladen",
|
||||
"Invite Members": "Mitglieder einladen",
|
||||
"Invite placeholder": "E-Mails durchsuchen (Unterstützt nur Gmail)",
|
||||
"is a Cloud Workspace": "ist ein Cloud Workspace.",
|
||||
"is a Local Workspace": "ist ein lokaler Workspace.",
|
||||
"It takes up little space on your device": "Es nimmt nur wenig Platz auf deinem Gerät ein.",
|
||||
"It takes up little space on your device.": "Es verbraucht nur wenig Speicherplatz auf deinem Gerät.",
|
||||
"It takes up more space on your device": "Es verbraucht mehr Speicherplatz auf deinem Gerät.",
|
||||
"It takes up more space on your device.": "Es verbraucht mehr Speicherplatz auf deinem Gerät.",
|
||||
"Jump to": "Springe zu",
|
||||
"Loading": "Lade...",
|
||||
"Local Workspace Description": "Alle Daten sind auf dem aktuellen Gerät gespeichert. Du kannst AFFiNE Cloud für diesen Workspace aktivieren, um deine Daten mit der Cloud zu synchronisieren.",
|
||||
"login success": "Login erfolgreich",
|
||||
"Member": "Mitglied",
|
||||
"Member has been removed": "{{name}} wurde entfernt",
|
||||
"Members": "Mitglieder",
|
||||
"mobile device": "Sieht aus, als ob du ein mobiles Gerät nutzt.",
|
||||
"mobile device description": "Wir arbeiten noch an der Unterstützung für mobile Geräte und empfehlen dir, ein Desktop-Gerät zu verwenden.",
|
||||
"Move folder": "Ordner verschieben",
|
||||
"Move folder hint": "Neuen Speicherort auswählen.",
|
||||
"Move folder success": "Ordnerverschiebung erfolgreich",
|
||||
"Move page to": "Seite verschieben nach...",
|
||||
"Move page to...": "Seite verschieben nach...",
|
||||
"Move to": "Verschieben zu",
|
||||
"Moved to Trash": "In Papierkorb verschoben",
|
||||
"My Workspaces": "Meine Workspaces",
|
||||
"Navigation Path": "Navigationspfad",
|
||||
"New Keyword Page": "Neue '{{query}}' Seite",
|
||||
"New Page": "Neue Seite",
|
||||
"New Workspace": "Neuer Workspace",
|
||||
"No item": "Kein Inhalt",
|
||||
"Non-Gmail": "Nur Gmail wird unterstützt",
|
||||
"Not now": "Vielleicht später",
|
||||
"Open folder": "Ordner öffnen",
|
||||
"Open folder hint": "Prüfe, wo sich der Speicherordner befindet.",
|
||||
"Open Workspace Settings": "Workspace Einstellungen öffnen",
|
||||
"Organize pages to build knowledge": "Seiten organisieren, um Wissen aufzubauen",
|
||||
"Owner": "Besitzer",
|
||||
"Paper": "Papier",
|
||||
"Pending": "Ausstehend",
|
||||
"Pivots": "Pivots",
|
||||
"Please make sure you are online": "Bitte stelle sicher, dass du online bist",
|
||||
"Publish": "Veröffentlichen",
|
||||
"Publish to web": "Im Web veröffentlichen",
|
||||
"Published Description": "Der aktuelle Workspace wurde im Web veröffentlicht, jeder mit dem Link kann den Inhalt sehen.",
|
||||
"Published to Web": "Im Web veröffentlicht",
|
||||
"Publishing": "Für das Veröffentlichen im Web werden die AFFiNE Cloud Services benötigt.",
|
||||
"Publishing Description": "Nach der Veröffentlichung im Web kann jeder den Inhalt dieses Workspaces über den Link einsehen.",
|
||||
"Quick search": "Schnelle Suche",
|
||||
"Quick search placeholder": "Schnelle Suche...",
|
||||
"Quick search placeholder2": "Suche in {{workspace}}",
|
||||
"Recent": "Neueste",
|
||||
"recommendBrowser": "Wir empfehlen den <1>Chrome</1> Browser für die beste Nutzererfahrung.",
|
||||
"Remove from Pivots": "Von Pivots entfernen",
|
||||
"Remove from workspace": "Vom Workspace entfernen",
|
||||
"Rename": "Umbenennen",
|
||||
"Restart Install Client Update": "Neustart zum Installieren des Updates",
|
||||
"Retain cached cloud data": "Zwischengespeicherte Cloud-Daten behalten",
|
||||
"Retain local cached data": "Lokale, zwischengespeicherte Daten beibehalten",
|
||||
"RFP": "Seiten können frei zu Pivots hinzugefügt/entfernt werden und bleiben über \"Alle Seiten\" zugänglich.",
|
||||
"Saved then enable AFFiNE Cloud": "Alle Änderungen werden lokal gespeichert. Klicke hier, um AFFiNE Cloud zu aktivieren.",
|
||||
"Set up an AFFiNE account to sync data": "Für das Synchronisieren wird ein AFFiNE Account benötigt",
|
||||
"Share Menu Public Workspace Description1": "Laden andere ein, dem Workspace beizutreten oder veröffentliche ihn im Internet.",
|
||||
"Share Menu Public Workspace Description2": "Der aktuelle Workspace wurde im Internet als öffentlicher Workspace veröffentlicht.",
|
||||
"Share with link": "Mit Link teilen",
|
||||
"Shared Pages": "Freigegebene Seiten",
|
||||
"Shared Pages Description": "Die öffentliche Freigabe der Seite erfordert den AFFiNE-Cloud-Dienst.",
|
||||
"Shared Pages In Public Workspace Description": "Der gesamte Workspace wird im Web veröffentlicht und kann über <1>Workspace Einstellungen</1> bearbeitet werden.",
|
||||
"Shortcuts": "Shortcuts",
|
||||
"Sign in": "In AFFiNE Cloud anmelden",
|
||||
"Sign in and Enable": "Anmelden und aktivieren",
|
||||
"Sign out": "Abmelden",
|
||||
"Sign out description": "Nach dem Abmelden gehen alle nicht synchronisierten Inhalte verloren.",
|
||||
"Skip": "Überspringen",
|
||||
"Stay logged out": "Abgemeldet bleiben",
|
||||
"Sticky": "Haftnotiz (bald verfügbar)",
|
||||
"still designed": "(Diese Seite ist noch im Aufbau.)",
|
||||
"Stop publishing": "Veröffentlichen stoppen",
|
||||
"Storage Folder": "Speicherordner",
|
||||
"Sync": "Sync",
|
||||
"Synced with AFFiNE Cloud": "Synchronisiert mit AFFiNE Cloud",
|
||||
"Tags": "Tags",
|
||||
"Title": "Titel",
|
||||
"UNKNOWN_ERROR": "Unbekannter Fehler",
|
||||
"Untitled": "Unbenannt",
|
||||
"Update Available": "Update verfügbar",
|
||||
"Update workspace name success": "Update vom Workspace-Namen erfolgreich",
|
||||
"Updated": "Aktualisiert",
|
||||
"upgradeBrowser": "Bitte aktualisiere auf die neueste Chrome-Version, um eine optimale Nutzererfahrung zu gewährleisten.",
|
||||
"Upload": "Hochladen",
|
||||
"Users": "Benutzer",
|
||||
"View Navigation Path": "Navigationspfad ansehen",
|
||||
"Wait for Sync": "Warte auf Sync",
|
||||
"will delete member": "wird Mitglied löschen",
|
||||
"Workspace Avatar": "Workspace Avatar",
|
||||
"Workspace Icon": "Workspace Icon",
|
||||
"Workspace Name": "Workspace Name",
|
||||
"Workspace Not Found": "Workspace nicht gefunden",
|
||||
"Workspace Owner": "Workspace-Besitzer",
|
||||
"Workspace Settings": "Workspace Einstellungen",
|
||||
"Workspace Type": "Workspace Typ",
|
||||
"You cannot delete the last workspace": "Du kannst den letzten Workspace nicht löschen"
|
||||
}
|
||||
641
packages/frontend/i18n/src/resources/en.json
Normal file
641
packages/frontend/i18n/src/resources/en.json
Normal file
@@ -0,0 +1,641 @@
|
||||
{
|
||||
"Access level": "Access level",
|
||||
"Add a subpage inside": "Add a subpage inside",
|
||||
"Add Workspace": "Add Workspace",
|
||||
"Add Workspace Hint": "Select the existed database file",
|
||||
"All changes are saved locally": "All changes are saved locally",
|
||||
"All data has been stored in the cloud": "All data has been stored in the cloud. ",
|
||||
"Back to Quick Search": "Back to Quick Search",
|
||||
"Change avatar hint": "New avatar will be shown for everyone.",
|
||||
"Change workspace name hint": "New name will be shown for everyone.",
|
||||
"Check Our Docs": "Check Our Docs",
|
||||
"Cloud Workspace Description": "All data will be synchronised and saved to the AFFiNE account <1>{{email}}</1>",
|
||||
"Collaboration": "Collaboration",
|
||||
"Collaboration Description": "Collaborating with other members requires AFFiNE Cloud service.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.description": "Automatically check for new updates periodically.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "Check for updates automatically",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.description": "Automatically download updates (to this device).",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.title": "Download updates automatically",
|
||||
"com.affine.aboutAFFiNE.changelog.description": "View the AFFiNE Changelog.",
|
||||
"com.affine.aboutAFFiNE.changelog.title": "Discover what's new",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "New version is ready",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "Check for updates",
|
||||
"com.affine.aboutAFFiNE.community.title": "Communities",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNE Community",
|
||||
"com.affine.aboutAFFiNE.contact.title": "Contact Us",
|
||||
"com.affine.aboutAFFiNE.contact.website": "Official Website",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "Privacy",
|
||||
"com.affine.aboutAFFiNE.legal.title": "Legal Info",
|
||||
"com.affine.aboutAFFiNE.legal.tos": "Terms of Use",
|
||||
"com.affine.aboutAFFiNE.subtitle": "Information about AFFiNE",
|
||||
"com.affine.aboutAFFiNE.title": "About AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "App Version",
|
||||
"com.affine.aboutAFFiNE.version.editor.title": "Editor Version",
|
||||
"com.affine.aboutAFFiNE.version.title": "Version",
|
||||
"com.affine.appearanceSettings.clientBorder.description": "Customise the appearance of the client.",
|
||||
"com.affine.appearanceSettings.clientBorder.title": "Client Border Style",
|
||||
"com.affine.appearanceSettings.color.description": "Choose your colour scheme",
|
||||
"com.affine.appearanceSettings.color.title": "Colour Scheme",
|
||||
"com.affine.appearanceSettings.date.title": "Date",
|
||||
"com.affine.appearanceSettings.dateFormat.description": "Customise your date style.",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "Date Format",
|
||||
"com.affine.appearanceSettings.font.description": "Choose your font style",
|
||||
"com.affine.appearanceSettings.font.title": "Font Style",
|
||||
"com.affine.appearanceSettings.fontStyle.sans": "Sans",
|
||||
"com.affine.appearanceSettings.fontStyle.serif": "Serif",
|
||||
"com.affine.appearanceSettings.fontStyle.mono": "Mono",
|
||||
"com.affine.appearanceSettings.fullWidth.description": "Maximum display of content within a page.",
|
||||
"com.affine.appearanceSettings.fullWidth.title": "Full width Layout",
|
||||
"com.affine.appearanceSettings.language.description": "Select the language for the interface.",
|
||||
"com.affine.appearanceSettings.language.title": "Display Language",
|
||||
"com.affine.appearanceSettings.noisyBackground.description": "Use background noise effect on the sidebar.",
|
||||
"com.affine.appearanceSettings.noisyBackground.title": "Noise background on the sidebar",
|
||||
"com.affine.appearanceSettings.sidebar.title": "Sidebar",
|
||||
"com.affine.appearanceSettings.startWeek.description": "By default, the week starts on Sunday.",
|
||||
"com.affine.appearanceSettings.startWeek.title": "Start Week On Monday",
|
||||
"com.affine.appearanceSettings.subtitle": "Customise your AFFiNE Appearance",
|
||||
"com.affine.appearanceSettings.theme.title": "Theme",
|
||||
"com.affine.appearanceSettings.title": "Appearance Settings",
|
||||
"com.affine.appearanceSettings.translucentUI.description": "Use transparency effect on the sidebar.",
|
||||
"com.affine.appearanceSettings.translucentUI.title": "Translucent UI on the sidebar",
|
||||
"com.affine.appearanceSettings.windowFrame.description": "Customise appearance of Windows Client.",
|
||||
"com.affine.appearanceSettings.windowFrame.frameless": "Frameless",
|
||||
"com.affine.appearanceSettings.windowFrame.NativeTitleBar": "Native Titlebar",
|
||||
"com.affine.appearanceSettings.windowFrame.title": "Window frame style",
|
||||
"com.affine.appUpdater.downloading": "Downloading",
|
||||
"com.affine.appUpdater.installUpdate": "Restart to install update",
|
||||
"com.affine.appUpdater.openDownloadPage": "Open download page",
|
||||
"com.affine.appUpdater.updateAvailable": "Update available",
|
||||
"com.affine.appUpdater.whatsNew": "Discover what's new!",
|
||||
"com.affine.auth.change.email.message": "Your current email is {{email}}. We’ll send a temporary verification link to this email.",
|
||||
"com.affine.auth.change.email.page.subtitle": "Please enter your new email address below. We will send a verification link to this email address to complete the process.",
|
||||
"com.affine.auth.change.email.page.success.subtitle": "Congratulations! You have successfully updated the email address associated with your AFFiNE Cloud account.",
|
||||
"com.affine.auth.change.email.page.success.title": "Email address updated!",
|
||||
"com.affine.auth.change.email.page.title": "Change email address",
|
||||
"com.affine.auth.create.count": "Create Account",
|
||||
"com.affine.auth.desktop.signing.in": "Signing in...",
|
||||
"com.affine.auth.desktop.signing.in.message": "Signing in with account <1></1>",
|
||||
"com.affine.auth.forget": "Forgot password",
|
||||
"com.affine.auth.has.signed": "Signed in",
|
||||
"com.affine.auth.has.signed.message": "You have been signed in, start to sync your data with AFFiNE Cloud!",
|
||||
"com.affine.auth.later": "Later",
|
||||
"com.affine.auth.open.affine": "Open AFFiNE",
|
||||
"com.affine.auth.open.affine.download-app": "Download App",
|
||||
"com.affine.auth.open.affine.prompt": "Opening <1>AFFiNE</1> app now",
|
||||
"com.affine.auth.open.affine.try-again": "Try again",
|
||||
"com.affine.auth.page.sent.email.subtitle": "Please set a password of 8-20 characters with both letters and numbers to continue signing up with ",
|
||||
"com.affine.auth.page.sent.email.title": "Welcome to AFFiNE Cloud, you are almost there!",
|
||||
"com.affine.auth.password": "Password",
|
||||
"com.affine.auth.password.error": "Invalid password",
|
||||
"com.affine.auth.reset.password": "Reset Password",
|
||||
"com.affine.auth.reset.password.message": "You will receive an email with a link to reset your password. Please check your inbox.",
|
||||
"com.affine.auth.reset.password.page.success": "Password reset successful",
|
||||
"com.affine.auth.reset.password.page.title": "Reset your AFFiNE Cloud password",
|
||||
"com.affine.auth.send.change.email.link": "Send verification link",
|
||||
"com.affine.auth.send.reset.password.link": "Send reset link",
|
||||
"com.affine.auth.send.set.password.link": "Send set link",
|
||||
"com.affine.auth.sent": "Sent",
|
||||
"com.affine.auth.sent.change.email.hint": "Verification link has been sent.",
|
||||
"com.affine.auth.sent.change.password.hint": "Reset password link has been sent.",
|
||||
"com.affine.auth.sent.reset.password.success.message": "Your password has upgraded! You can sign in AFFiNE Cloud with new password!",
|
||||
"com.affine.auth.sent.set.password.hint": "Set password link has been sent.",
|
||||
"com.affine.auth.sent.set.password.success.message": "Your password has saved! You can sign in AFFiNE Cloud with email and password!",
|
||||
"com.affine.auth.set.email.save": "Save Email",
|
||||
"com.affine.auth.set.password": "Set password",
|
||||
"com.affine.auth.set.password.message": "Please set a password of 8-20 characters with both letters and numbers to continue signing up with ",
|
||||
"com.affine.auth.set.password.page.success": "Password set successful",
|
||||
"com.affine.auth.set.password.page.title": "Set your AFFiNE Cloud password",
|
||||
"com.affine.auth.set.password.placeholder": "Set a password at least 8 letters long",
|
||||
"com.affine.auth.set.password.placeholder.confirm": "Confirm password",
|
||||
"com.affine.auth.set.password.save": "Save Password",
|
||||
"com.affine.auth.sign.auth.code.error.hint": "Wrong code, please try again",
|
||||
"com.affine.auth.sign.auth.code.message": "If you haven't received the email, please check your spam folder.",
|
||||
"com.affine.auth.sign.auth.code.message.password": "If you haven't received the email, please check your spam folder. Or <1>sign in with password</1> instead.",
|
||||
"com.affine.auth.sign.auth.code.on.resend.hint": "Send code again",
|
||||
"com.affine.auth.sign.auth.code.resend.hint": "Resend code",
|
||||
"com.affine.auth.sign.condition": "Terms of Conditions",
|
||||
"com.affine.auth.sign.email.continue": "Continue with Email",
|
||||
"com.affine.auth.sign.email.error": "Invalid email",
|
||||
"com.affine.auth.sign.email.placeholder": "Enter your email address",
|
||||
"com.affine.auth.sign.in": "Sign in",
|
||||
"com.affine.auth.sign.in.sent.email.subtitle": "Confirm your email",
|
||||
"com.affine.auth.sign.message": "By clicking “Continue with Google/Email” above, you acknowledge that you agree to AFFiNE's <1>Terms of Conditions</1> and <3>Privacy Policy</3>.",
|
||||
"com.affine.auth.sign.no.access.hint": "AFFiNE Cloud is in early access. Check out this link to learn more about the benefits of becoming an AFFiNE Cloud Early Supporter: ",
|
||||
"com.affine.auth.sign.no.access.link": "AFFiNE Cloud Early Access",
|
||||
"com.affine.auth.sign.no.access.wait": "Wait for public release",
|
||||
"com.affine.auth.sign.policy": "Privacy Policy",
|
||||
"com.affine.auth.sign.sent.email.message.end": " You can click the link to create an account automatically.",
|
||||
"com.affine.auth.sign.sent.email.message.start": "An email with a magic link has been sent to ",
|
||||
"com.affine.auth.sign.up": "Sign up",
|
||||
"com.affine.auth.sign.up.sent.email.subtitle": "Create your account",
|
||||
"com.affine.auth.sign.up.success.subtitle": "The app will automatically open or redirect to the web version. If you encounter any issues, you can also click the button below to manually open the AFFiNE app.",
|
||||
"com.affine.auth.sign.up.success.title": "Your account has been created and you’re now signed in!",
|
||||
"com.affine.auth.signed.success.subtitle": "You have successfully signed in. The app will automatically open or redirect to the web version. if you encounter any issues, you can also click the button below to manually open the AFFiNE app.",
|
||||
"com.affine.auth.signed.success.title": "You’re almost there!",
|
||||
"com.affine.auth.toast.message.failed": "Server error, please try again later.",
|
||||
"com.affine.auth.toast.message.signed-in": "You have been signed in, start to sync your data with AFFiNE Cloud!",
|
||||
"com.affine.auth.toast.title.failed": "Unable to sign in",
|
||||
"com.affine.auth.toast.title.signed-in": "Signed in",
|
||||
"com.affine.backButton": "Back",
|
||||
"com.affine.banner.content": "This demo is limited. <1>Download the AFFiNE Client</1> for the latest features and Performance.",
|
||||
"com.affine.brand.affineCloud": "AFFiNE Cloud",
|
||||
"com.affine.cloudTempDisable.description": "We are upgrading the AFFiNE Cloud service and it is temporarily unavailable on the client side. If you wish to stay updated on the progress and be notified on availability, you can fill out the <1>AFFiNE Cloud Signup</1>.",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNE Cloud is upgrading now.",
|
||||
"com.affine.collection-bar.action.tooltip.delete": "Delete",
|
||||
"com.affine.collection-bar.action.tooltip.edit": "Edit",
|
||||
"com.affine.collection-bar.action.tooltip.pin": "Pin to Sidebar",
|
||||
"com.affine.collection-bar.action.tooltip.unpin": "Unpin",
|
||||
"com.affine.collectionBar.backToAll": "Back to all",
|
||||
"com.affine.confirmModal.button.cancel": "Cancel",
|
||||
"com.affine.currentYear": "Current Year",
|
||||
"com.affine.deleteLeaveWorkspace.description": "Delete workspace from this device and optionally delete all data.",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "Leave Workspace",
|
||||
"com.affine.deleteLeaveWorkspace.leaveDescription": "After you leave, you will not be able to access content within this workspace.",
|
||||
"com.affine.draw_with_a_blank_whiteboard": "Draw with a blank whiteboard",
|
||||
"com.affine.earlier": "Earlier",
|
||||
"com.affine.editCollection.button.cancel": "Cancel",
|
||||
"com.affine.editCollection.button.create": "Create",
|
||||
"com.affine.editCollection.filters": "Filters",
|
||||
"com.affine.editCollection.save": "Save",
|
||||
"com.affine.editCollection.saveCollection": "Save as New Collection",
|
||||
"com.affine.editCollection.untitledCollection": "Untitled Collection",
|
||||
"com.affine.editCollection.updateCollection": "Update Collection",
|
||||
"com.affine.editorModeSwitch.tooltip": "Switch",
|
||||
"com.affine.emptyDesc": "There's no page here yet",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "Cancel",
|
||||
"com.affine.expired.page.subtitle": "Please request a new reset password link.",
|
||||
"com.affine.expired.page.title": "This link has expired...",
|
||||
"com.affine.export.error.message": "Please try it again later.",
|
||||
"com.affine.export.error.title": "Export failed due to an unexpected error",
|
||||
"com.affine.export.success.message": "Please open the download folder to check.",
|
||||
"com.affine.export.success.title": "Exported successfully",
|
||||
"com.affine.favoritePageOperation.add": "Add to favourites",
|
||||
"com.affine.favoritePageOperation.remove": "Remove from favourites",
|
||||
"com.affine.filter": "Filter",
|
||||
"com.affine.filter.after": "after",
|
||||
"com.affine.filter.before": "before",
|
||||
"com.affine.filter.contains all": "contains all",
|
||||
"com.affine.filter.contains one of": "contains one of",
|
||||
"com.affine.filter.does not contains all": "does not contains all",
|
||||
"com.affine.filter.does not contains one of": "does not contains one of",
|
||||
"com.affine.filter.false": "false",
|
||||
"com.affine.filter.is": "is",
|
||||
"com.affine.filter.is empty": "is empty",
|
||||
"com.affine.filter.is not empty": "is not empty",
|
||||
"com.affine.filter.is-favourited": "Favourited",
|
||||
"com.affine.filter.save-view": "Save View",
|
||||
"com.affine.filter.true": "true",
|
||||
"com.affine.filterList.button.add": "Add Filter",
|
||||
"com.affine.header.option.add-tag": "Add Tag",
|
||||
"com.affine.header.option.duplicate": "Duplicate",
|
||||
"com.affine.helpIsland.contactUs": "Contact us",
|
||||
"com.affine.helpIsland.gettingStarted": "Getting started",
|
||||
"com.affine.helpIsland.helpAndFeedback": "Help and Feedback",
|
||||
"com.affine.import_file": "Support Markdown/Notion",
|
||||
"com.affine.inviteModal.button.cancel": "Cancel",
|
||||
"com.affine.keyboardShortcuts.appendDailyNote": "Append to Daily Note",
|
||||
"com.affine.keyboardShortcuts.bodyText": "Body text",
|
||||
"com.affine.keyboardShortcuts.bold": "Bold",
|
||||
"com.affine.keyboardShortcuts.cancel": "Cancel",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "Code block",
|
||||
"com.affine.keyboardShortcuts.curveConnector": "Curve Connector",
|
||||
"com.affine.keyboardShortcuts.divider": "Divider",
|
||||
"com.affine.keyboardShortcuts.elbowedConnector": "Elbowed Connector",
|
||||
"com.affine.keyboardShortcuts.expandOrCollapseSidebar": "Expand/Collapse Sidebar",
|
||||
"com.affine.keyboardShortcuts.goBack": "Go Back",
|
||||
"com.affine.keyboardShortcuts.goForward": "Go Forward",
|
||||
"com.affine.keyboardShortcuts.group": "Group",
|
||||
"com.affine.keyboardShortcuts.groupDatabase": "Group as Database",
|
||||
"com.affine.keyboardShortcuts.hand": "Hand",
|
||||
"com.affine.keyboardShortcuts.heading": "Heading {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "Image",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "Increase indent",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "Inline code",
|
||||
"com.affine.keyboardShortcuts.italic": "Italic",
|
||||
"com.affine.keyboardShortcuts.link": "Hyperlink (with selected text)",
|
||||
"com.affine.keyboardShortcuts.moveDown": "Move Down",
|
||||
"com.affine.keyboardShortcuts.moveUp": "Move Up",
|
||||
"com.affine.keyboardShortcuts.newPage": "New Page",
|
||||
"com.affine.keyboardShortcuts.note": "Note",
|
||||
"com.affine.keyboardShortcuts.pen": "Pen",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "Quick Search",
|
||||
"com.affine.keyboardShortcuts.redo": "Redo",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "Reduce indent",
|
||||
"com.affine.keyboardShortcuts.select": "Select",
|
||||
"com.affine.keyboardShortcuts.selectAll": "Select All",
|
||||
"com.affine.keyboardShortcuts.shape": "Shape",
|
||||
"com.affine.keyboardShortcuts.straightConnector": "Straight Connector",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "Strikethrough",
|
||||
"com.affine.keyboardShortcuts.subtitle": "Check Keyboard Shortcuts quickly",
|
||||
"com.affine.keyboardShortcuts.switch": "Switch",
|
||||
"com.affine.keyboardShortcuts.text": "Text",
|
||||
"com.affine.keyboardShortcuts.title": "Keyboard shortcuts",
|
||||
"com.affine.keyboardShortcuts.underline": "Underline",
|
||||
"com.affine.keyboardShortcuts.undo": "Undo",
|
||||
"com.affine.keyboardShortcuts.unGroup": "Ungroup",
|
||||
"com.affine.keyboardShortcuts.zoomIn": "Zoom in",
|
||||
"com.affine.keyboardShortcuts.zoomOut": "Zoom out",
|
||||
"com.affine.keyboardShortcuts.zoomTo100": "Zoom to 100%",
|
||||
"com.affine.keyboardShortcuts.zoomToFit": "Zoom to fit",
|
||||
"com.affine.last30Days": "Last 30 Days",
|
||||
"com.affine.last7Days": "Last 7 Days",
|
||||
"com.affine.lastMonth": "Last month",
|
||||
"com.affine.lastWeek": "Last week",
|
||||
"com.affine.lastYear": "Last year",
|
||||
"com.affine.loading": "Loading...",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}} will be moved to Trash",
|
||||
"com.affine.moveToTrash.confirmModal.title": "Delete page?",
|
||||
"com.affine.moveToTrash.title": "Move to Trash",
|
||||
"com.affine.nameWorkspace.button.cancel": "Cancel",
|
||||
"com.affine.nameWorkspace.button.create": "Create",
|
||||
"com.affine.nameWorkspace.description": "A workspace is your virtual space to capture, create and plan as just one person or together as a team.",
|
||||
"com.affine.nameWorkspace.placeholder": "Set a Workspace name",
|
||||
"com.affine.nameWorkspace.title": "Name Your Workspace",
|
||||
"com.affine.new_edgeless": "New Edgeless",
|
||||
"com.affine.new_import": "Import",
|
||||
"com.affine.notFoundPage.backButton": "Back Home",
|
||||
"com.affine.notFoundPage.title": "404 - Page Not Found",
|
||||
"com.affine.onboarding.title1": "Hyper merged whiteboard and docs",
|
||||
"com.affine.onboarding.title2": "Intuitive & robust block-based editing",
|
||||
"com.affine.onboarding.videoDescription1": "Easily switch between Page mode for structured document creation and Whiteboard mode for the freeform visual expression of creative ideas.",
|
||||
"com.affine.onboarding.videoDescription2": "Create structured documents with ease, using a modular interface to drag and drop blocks of text, images, and other content.",
|
||||
"com.affine.openPageOperation.newTab": "Open in new tab",
|
||||
"com.affine.pageMode.all": "all",
|
||||
"com.affine.pageMode.edgeless": "Edgeless",
|
||||
"com.affine.pageMode.page": "Page",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "Cancel",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "Disable",
|
||||
"com.affine.publicLinkDisableModal.description": "Disabling this public link will prevent anyone with the link from accessing this page.",
|
||||
"com.affine.publicLinkDisableModal.title": "Disable Public Link",
|
||||
"com.affine.rootAppSidebar.collections": "Collections",
|
||||
"com.affine.rootAppSidebar.favorites": "Favourites",
|
||||
"com.affine.rootAppSidebar.others": "Others",
|
||||
"com.affine.setDBLocation.button.customize": "Customise",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "Default Location",
|
||||
"com.affine.setDBLocation.description": "Select where you want to create your workspace. The data of workspace is saved locally by default.",
|
||||
"com.affine.setDBLocation.title": "Set database location",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "By default will be saved to {{location}}",
|
||||
"com.affine.setSyncingMode.button.continue": "Continue",
|
||||
"com.affine.setSyncingMode.cloud": "Sync across devices with AFFiNE Cloud",
|
||||
"com.affine.setSyncingMode.deviceOnly": "Use on current device only",
|
||||
"com.affine.setSyncingMode.title.added": "Added Successfully",
|
||||
"com.affine.setSyncingMode.title.created": "Created Successfully",
|
||||
"com.affine.setting.account": "Account Settings",
|
||||
"com.affine.setting.account.delete": "Delete Account",
|
||||
"com.affine.setting.account.delete.message": "Permanently delete this account and the Workspace data backup in AFFiNE Cloud. This action can not be undone.",
|
||||
"com.affine.setting.account.message": "Your personal information",
|
||||
"com.affine.setting.sign.message": "Sync with AFFiNE Cloud",
|
||||
"com.affine.setting.sign.out.message": "Securely sign out of your account.",
|
||||
"com.affine.settings.appearance": "Appearance",
|
||||
"com.affine.settings.auto-check-description": "If enabled, it will automatically check for new versions at regular intervals.",
|
||||
"com.affine.settings.auto-download-description": " If enabled, new versions will be automatically downloaded to the current device.",
|
||||
"com.affine.settings.email": "Email",
|
||||
"com.affine.settings.email.action": "Change Email",
|
||||
"com.affine.settings.member-tooltip": "Enable AFFiNE Cloud to collaborate with others",
|
||||
"com.affine.settings.password": "Password",
|
||||
"com.affine.settings.password.action.change": "Change password",
|
||||
"com.affine.settings.password.action.set": "Set password",
|
||||
"com.affine.settings.password.message": "Set a password to sign in to your account",
|
||||
"com.affine.settings.profile": "My Profile",
|
||||
"com.affine.settings.profile.message": "Your account profile will be displayed to everyone.",
|
||||
"com.affine.settings.profile.name": "Display Name",
|
||||
"com.affine.settings.profile.placeholder": "Input account name",
|
||||
"com.affine.settings.remove-workspace": "Remove Workspace",
|
||||
"com.affine.settings.sign": "Sign in / Sign up",
|
||||
"com.affine.settings.storage.db-location.change-hint": "Click to move storage location.",
|
||||
"com.affine.settings.storage.description": "Check or change storage location",
|
||||
"com.affine.settings.storage.description-alt": "Check or change storage location. Click path to edit location.",
|
||||
"com.affine.settings.suggestion": "Need more customization options? Tell us in the community.",
|
||||
"com.affine.settings.workspace.description": "You can view current workspace's information here.",
|
||||
"com.affine.settings.workspace.not-owner": "Only an owner can edit the the Workspace avatar and name.Changes will be shown for everyone.",
|
||||
"com.affine.settings.workspace.publish-tooltip": "Enable AFFiNE Cloud to publish this Workspace",
|
||||
"com.affine.settings.workspace.storage.tip": "Click to move storage location.",
|
||||
"com.affine.settingSidebar.settings.general": "General",
|
||||
"com.affine.settingSidebar.settings.workspace": "Workspace",
|
||||
"com.affine.settingSidebar.title": "Settings",
|
||||
"com.affine.share-menu.EnableCloudDescription": "Sharing page requires AFFiNE Cloud.",
|
||||
"com.affine.share-menu.shareButton": "Share",
|
||||
"com.affine.share-menu.sharedButton": "Shared",
|
||||
"com.affine.share-menu.SharedPage": "Shared Page",
|
||||
"com.affine.share-menu.ShareMode": "Share mode",
|
||||
"com.affine.share-menu.SharePage": "Share Page",
|
||||
"com.affine.share-menu.ShareViaExport": "Share via Export",
|
||||
"com.affine.share-menu.ShareViaExportDescription": "Download a static copy of your page to share with others.",
|
||||
"com.affine.share-menu.ShareWithLink": "Share with link",
|
||||
"com.affine.share-menu.ShareWithLinkDescription": "Create a link you can easily share with anyone. The visitors will open your page in the form od a document",
|
||||
"com.affine.shortcutsTitle.edgeless": "Edgeless",
|
||||
"com.affine.shortcutsTitle.general": "General",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown Syntax",
|
||||
"com.affine.shortcutsTitle.page": "Page",
|
||||
"com.affine.sidebarSwitch.collapse": "Collapse sidebar",
|
||||
"com.affine.sidebarSwitch.expand": "Expand sidebar",
|
||||
"com.affine.storage.disabled.hint": "AFFiNE Cloud is currently in early access phase and is not supported for upgrading, please be patient and wait for our pricing plan.",
|
||||
"com.affine.storage.extend.hint": "The usage has reached its maximum capacity, AFFiNE Cloud is currently in early access phase and is not supported for upgrading, please be patient and wait for our pricing plan. ",
|
||||
"com.affine.storage.extend.link": "To get more information click here.",
|
||||
"com.affine.storage.title": "AFFiNE Cloud Storage",
|
||||
"com.affine.storage.upgrade": "Upgrade to Pro",
|
||||
"com.affine.storage.used.hint": "Space used",
|
||||
"com.affine.themeSettings.dark": "Dark",
|
||||
"com.affine.themeSettings.light": "Light",
|
||||
"com.affine.themeSettings.system": "System",
|
||||
"com.affine.toastMessage.addedFavorites": "Added to Favourites",
|
||||
"com.affine.toastMessage.edgelessMode": "Edgeless Mode",
|
||||
"com.affine.toastMessage.movedTrash": "Moved to Trash",
|
||||
"com.affine.toastMessage.pageMode": "Page Mode",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "Permanently deleted",
|
||||
"com.affine.toastMessage.removedFavorites": "Removed from Favourites",
|
||||
"com.affine.toastMessage.restored": "{{title}} restored",
|
||||
"com.affine.toastMessage.successfullyDeleted": "Successfully deleted",
|
||||
"com.affine.today": "Today",
|
||||
"com.affine.trashOperation.delete": "Delete",
|
||||
"com.affine.trashOperation.delete.description": "Once deleted, you can't undo this action. Do you confirm?",
|
||||
"com.affine.trashOperation.delete.title": "Permanently delete",
|
||||
"com.affine.trashOperation.deleteDescription": "Once deleted, you can't undo this action. Do you confirm?",
|
||||
"com.affine.trashOperation.deletePermanently": "Delete permanently",
|
||||
"com.affine.trashOperation.restoreIt": "Restore it",
|
||||
"com.affine.workspace.cannot-delete": "You cannot delete the last workspace",
|
||||
"com.affine.workspace.cloud": "Cloud Workspaces",
|
||||
"com.affine.workspace.cloud.account.logout": "Sign Out",
|
||||
"com.affine.workspace.cloud.account.settings": "Account Settings",
|
||||
"com.affine.workspace.cloud.auth": "Sign up/ Sign in",
|
||||
"com.affine.workspace.cloud.description": "Sync with AFFiNE Cloud",
|
||||
"com.affine.workspace.cloud.join": "Join Workspace",
|
||||
"com.affine.workspace.local": "Local Workspaces",
|
||||
"com.affine.workspace.local.import": "Import Workspace",
|
||||
"com.affine.workspaceDelete.button.cancel": "Cancel",
|
||||
"com.affine.workspaceDelete.button.delete": "Delete",
|
||||
"com.affine.workspaceDelete.description": "Deleting <1>{{workspace}}</1> cannot be undone, please proceed with caution. All contents will be lost.",
|
||||
"com.affine.workspaceDelete.description2": "Deleting <1>{{workspace}}</1> will delete both local and cloud data, this operation cannot be undone, please proceed with caution.",
|
||||
"com.affine.workspaceDelete.placeholder": "Please type workspace name to confirm",
|
||||
"com.affine.workspaceDelete.title": "Delete Workspace",
|
||||
"com.affine.workspaceLeave.button.cancel": "Cancel",
|
||||
"com.affine.workspaceLeave.button.leave": "Leave",
|
||||
"com.affine.workspaceLeave.description": "After you leave, you will no longer be able to access the contents of this workspace.",
|
||||
"com.affine.workspaceSubPath.all": "All pages",
|
||||
"com.affine.workspaceSubPath.trash": "Trash",
|
||||
"com.affine.workspaceType.cloud": "Cloud Workspace",
|
||||
"com.affine.workspaceType.joined": "Joined Workspace",
|
||||
"com.affine.workspaceType.local": "Local Workspace",
|
||||
"com.affine.workspaceType.offline": "Available Offline",
|
||||
"com.affine.write_with_a_blank_page": "Write with a blank page",
|
||||
"com.affine.yesterday": "Yesterday",
|
||||
"Confirm": "Confirm",
|
||||
"Connector": "Connector",
|
||||
"Continue with Google": "Continue with Google",
|
||||
"Convert to ": "Convert to ",
|
||||
"Copied link to clipboard": "Copied link to clipboard",
|
||||
"Copy": "Copy",
|
||||
"Copy Link": "Copy Link",
|
||||
"core": "core",
|
||||
"Create": "Create",
|
||||
"Create a collection": "Create a collection",
|
||||
"Create Or Import": "Create or Import",
|
||||
"Create Shared Link Description": "Create a link you can easily share with anyone.",
|
||||
"Create your own workspace": "Create your own workspace",
|
||||
"Created": "Created",
|
||||
"Created with": "Created with",
|
||||
"Data sync mode": "Data sync mode",
|
||||
"DB_FILE_ALREADY_LOADED": "Database file already loaded",
|
||||
"DB_FILE_INVALID": "Invalid Database file",
|
||||
"DB_FILE_MIGRATION_FAILED": "Database file migration failed",
|
||||
"DB_FILE_PATH_INVALID": "Database file path invalid",
|
||||
"Delete": "Delete",
|
||||
"Delete Member?": "Delete Member?",
|
||||
"Delete Workspace Label Hint": "After deleting this Workspace, you will permanently delete all of its content for everyone. No one will be able to recover the content of this Workspace.",
|
||||
"Delete Workspace placeholder": "Please type “Delete” to confirm",
|
||||
"Disable": "Disable",
|
||||
"Disable Public Link": "Disable Public Link",
|
||||
"Disable Public Sharing": "Disable Public Sharing",
|
||||
"Download all data": "Download all data",
|
||||
"Download core data": "Download core data",
|
||||
"Download data": "Download {{CoreOrAll}} data",
|
||||
"Download data Description1": "It takes up more space on your device.",
|
||||
"Download data Description2": "It takes up little space on your device.",
|
||||
"Early Access Stage": "Early Access Stage",
|
||||
"Edgeless": "Edgeless",
|
||||
"Edit": "Edit",
|
||||
"Edit Filter": "Edit Filter",
|
||||
"emptyAllPages": "Click on the <1>$t(New Page)</1> button to create your first page.",
|
||||
"emptyAllPagesClient": "Click on the <1>$t(New Page)</1> button Or press <3>{{shortcut}}</3> to create your first page.",
|
||||
"emptyFavorite": "Click Add to Favourites and the page will appear here.",
|
||||
"emptySharedPages": "Shared pages will appear here.",
|
||||
"emptyTrash": "Click Add to Trash and the page will appear here.",
|
||||
"Enable": "Enable",
|
||||
"Enable AFFiNE Cloud": "Enable AFFiNE Cloud",
|
||||
"Enable AFFiNE Cloud Description": "If enabled, the data in this workspace will be backed up and synchronised via AFFiNE Cloud.",
|
||||
"Enable cloud hint": "The following functions rely on AFFiNE Cloud. All data is stored on the current device. You can enable AFFiNE Cloud for this workspace to keep data in sync with the cloud.",
|
||||
"Enabled success": "Enabled success",
|
||||
"Exclude from filter": "Exclude from filter",
|
||||
"Export": "Export",
|
||||
"Export AFFiNE backup file": "Export AFFiNE backup file",
|
||||
"Export Description": "You can export the entire Workspace data for backup, and the exported data can be re-imported.",
|
||||
"Export Shared Pages Description": "Download a static copy of your page to share with others.",
|
||||
"Export success": "Export success",
|
||||
"Export failed": "Export failed",
|
||||
"Export to HTML": "Export to HTML",
|
||||
"Export to Markdown": "Export to Markdown",
|
||||
"Export to PDF": "Export to PDF",
|
||||
"Export to PNG": "Export to PNG",
|
||||
"Export Workspace": "Export Workspace <1>{{workspace}}</1> is coming soon",
|
||||
"Failed to publish workspace": "Failed to publish workspace",
|
||||
"Favorite": "Favourite",
|
||||
"Favorite pages for easy access": "Favourite pages for easy access",
|
||||
"Favorited": "Favourited",
|
||||
"FILE_ALREADY_EXISTS": "File already exists",
|
||||
"Find 0 result": "Found 0 results",
|
||||
"Find results": "Found {{number}} result(s)",
|
||||
"Force Sign Out": "Force Sign Out",
|
||||
"Get in touch!": "Get in touch!",
|
||||
"Get in touch! Join our communities": "Get in touch! Join our communities.",
|
||||
"Get in touch! Join our communities.": "Get in touch! Join our communities.",
|
||||
"Got it": "Got it",
|
||||
"How is AFFiNE Alpha different?": "How is AFFiNE Alpha different?",
|
||||
"Import": "Import",
|
||||
"Info": "Info",
|
||||
"Invitation sent": "Invitation sent",
|
||||
"Invitation sent hint": "Invited members have been notified with email to join this Workspace.",
|
||||
"Invite": "Invite",
|
||||
"Invite Members": "Invite Members",
|
||||
"Invite Members Message": "Invited members will collaborate with you in current Workspace",
|
||||
"Invite placeholder": "Search mail (Gmail support only)",
|
||||
"invited you to join": "invited you to join",
|
||||
"is a Cloud Workspace": "is a Cloud Workspace.",
|
||||
"is a Local Workspace": "is a Local Workspace.",
|
||||
"It takes up little space on your device": "It takes up little space on your device.",
|
||||
"It takes up little space on your device.": "It takes up little space on your device.",
|
||||
"It takes up more space on your device": "It takes up more space on your device.",
|
||||
"It takes up more space on your device.": "It takes up more space on your device.",
|
||||
"Jump to": "Jump to",
|
||||
"Leave": "Leave",
|
||||
"Loading": "Loading...",
|
||||
"Local Workspace Description": "All data is stored on the current device. You can enable AFFiNE Cloud for this workspace to keep data in sync with the cloud.",
|
||||
"login success": "Login success",
|
||||
"Member": "Member",
|
||||
"Member has been removed": "{{name}} has been removed",
|
||||
"Members": "Members",
|
||||
"Members hint": "Manage members here, invite new member by email.",
|
||||
"mobile device": "Looks like you are browsing on a mobile device.",
|
||||
"mobile device description": "We are still working on mobile support and recommend you use a desktop device.",
|
||||
"Move folder": "Move folder",
|
||||
"Move folder hint": "Select a new storage location.",
|
||||
"Move folder success": "Move folder success",
|
||||
"Move page to": "Move page to...",
|
||||
"Move page to...": "Move page to...",
|
||||
"Move to": "Move to",
|
||||
"Moved to Trash": "Moved to Trash",
|
||||
"My Workspaces": "My Workspaces",
|
||||
"Navigation Path": "Navigation Path",
|
||||
"New Keyword Page": "New '{{query}}' page",
|
||||
"New Page": "New Page",
|
||||
"New Workspace": "New Workspace",
|
||||
"No item": "No item",
|
||||
"Non-Gmail": "Non-Gmail is not supported",
|
||||
"None yet": "None yet",
|
||||
"Not now": "Not now",
|
||||
"Open folder": "Open folder",
|
||||
"Open folder hint": "Check the where the storage folder is located.",
|
||||
"Open Workspace Settings": "Open Workspace Settings",
|
||||
"Organize pages to build knowledge": "Organise pages to build knowledge",
|
||||
"Owner": "Owner",
|
||||
"Paper": "Paper",
|
||||
"Pending": "Pending",
|
||||
"Pivots": "Pivots",
|
||||
"Please make sure you are online": "Please make sure you are online",
|
||||
"Publish": "Publish",
|
||||
"Publish to web": "Publish to web",
|
||||
"Published Description": " The current workspace has been published to the web, everyone can view the contents of this workspace through the link.",
|
||||
"Published hint": "Visitors can view the contents through the provided link.",
|
||||
"Published to Web": "Published to Web",
|
||||
"Publishing": "Publishing to web requires AFFiNE Cloud service.",
|
||||
"Publishing Description": "After publishing to the web, everyone can view the content of this workspace through the link.",
|
||||
"Quick search": "Quick search",
|
||||
"Quick search placeholder": "Quick Search...",
|
||||
"Quick search placeholder2": "Search in {{workspace}}",
|
||||
"Recent": "Recent",
|
||||
"recommendBrowser": " We recommend the <1>Chrome</1> browser for optimal experience.",
|
||||
"Remove from Pivots": "Remove from Pivots",
|
||||
"Remove from workspace": "Remove from workspace",
|
||||
"Remove special filter": "Remove special filter",
|
||||
"Rename": "Rename",
|
||||
"Restart Install Client Update": "Restart to install update",
|
||||
"Retain cached cloud data": "Retain cached cloud data",
|
||||
"Retain local cached data": "Retain local cached data",
|
||||
"RFP": "Pages can be freely added/removed from pivots, remaining accessible from \"All Pages\".",
|
||||
"Saved then enable AFFiNE Cloud": "All changes are saved locally, click to enable AFFiNE Cloud.",
|
||||
"Set up an AFFiNE account to sync data": "Set up an AFFiNE account to sync data",
|
||||
"Share Menu Public Workspace Description1": "Invite others to join the Workspace or publish it to web.",
|
||||
"Share Menu Public Workspace Description2": "Current workspace has been published to the web as a public workspace.",
|
||||
"Share with link": "Share with link",
|
||||
"Shared Pages": "Shared Pages",
|
||||
"Shared Pages Description": "Sharing page publicly requires AFFiNE Cloud service.",
|
||||
"Shared Pages In Public Workspace Description": "The entire Workspace is published on the web and can be edited via <1>Workspace Settings</1>.",
|
||||
"Shortcuts": "Shortcuts",
|
||||
"Sign in": "Sign in AFFiNE Cloud",
|
||||
"Sign in and Enable": "Sign in and Enable",
|
||||
"Sign out": "Sign out",
|
||||
"Sign out description": "Signing out will cause the unsynchronised content to be lost.",
|
||||
"Skip": "Skip",
|
||||
"Stay logged out": "Stay logged out",
|
||||
"Sticky": "Sticky",
|
||||
"still designed": "(This page is still being designed.)",
|
||||
"Stop publishing": "Stop publishing",
|
||||
"Storage": "Storage",
|
||||
"Storage and Export": "Storage and Export",
|
||||
"Storage Folder": "Storage Folder",
|
||||
"Successfully deleted": "Successfully deleted",
|
||||
"Successfully joined!": "Successfully joined!",
|
||||
"Switch": "Switch",
|
||||
"Sync": "Sync",
|
||||
"Synced with AFFiNE Cloud": "Synced with AFFiNE Cloud",
|
||||
"Tags": "Tags",
|
||||
"Title": "Title",
|
||||
"UNKNOWN_ERROR": "Unknown error",
|
||||
"Unpin": "Unpin",
|
||||
"Unpublished hint": "Once published to the web, visitors can view the contents through the provided link.",
|
||||
"Untitled": "Untitled",
|
||||
"Update Available": "Update available",
|
||||
"Update workspace name success": "Update workspace name success",
|
||||
"Updated": "Updated",
|
||||
"upgradeBrowser": "Please upgrade to the latest version of Chrome for the best experience.",
|
||||
"Upload": "Upload",
|
||||
"Users": "Users",
|
||||
"View Navigation Path": "View Navigation Path",
|
||||
"Visit Workspace": "Visit Workspace",
|
||||
"Wait for Sync": "Wait for Sync",
|
||||
"will delete member": "will delete member",
|
||||
"Workspace Avatar": "Workspace Avatar",
|
||||
"Workspace Icon": "Workspace Icon",
|
||||
"Workspace Name": "Workspace Name",
|
||||
"Workspace Not Found": "Workspace Not Found",
|
||||
"Workspace Owner": "Workspace Owner",
|
||||
"Workspace Profile": "Workspace Profile",
|
||||
"Workspace saved locally": "{{name}} is saved locally",
|
||||
"Workspace Settings": "Workspace Settings",
|
||||
"Workspace Settings with name": "{{name}}'s Settings",
|
||||
"Workspace Type": "Workspace Type",
|
||||
"You cannot delete the last workspace": "You cannot delete the last workspace",
|
||||
"Click to replace photo": "Click to replace photo",
|
||||
"Remove photo": "Remove photo",
|
||||
"Removed successfully": "Removed successfully",
|
||||
"Successfully enabled AFFiNE Cloud": "Successfully enabled AFFiNE Cloud",
|
||||
"404.hint": "Sorry, you do not have access or this content does not exist...",
|
||||
"404.back": "Back to My Content",
|
||||
"404.signOut": "Sign in to another account",
|
||||
"com.affine.workspaceList.addWorkspace.create": "Create Workspace",
|
||||
"com.affine.workspaceList.workspaceListType.local": "Local Storage",
|
||||
"com.affine.workspaceList.workspaceListType.cloud": "Cloud Sync",
|
||||
"Local": "Local",
|
||||
"com.affine.cmdk.placeholder": "Type a command or search anything...",
|
||||
"com.affine.cmdk.affine.new-page": "New Page",
|
||||
"com.affine.cmdk.affine.new-edgeless-page": "New Edgeless",
|
||||
"com.affine.cmdk.affine.new-workspace": "New Workspace",
|
||||
"com.affine.cmdk.affine.create-new-page-as": "Create New Page as: <1>{{query}}</1>",
|
||||
"com.affine.cmdk.affine.create-new-edgeless-as": "Create New Edgeless as: <1>{{query}}</1>",
|
||||
"com.affine.cmdk.affine.color-scheme.to": "Change Colour Scheme to <1>{{colour}}</1>",
|
||||
"com.affine.cmdk.affine.left-sidebar.expand": "Expand Left Sidebar",
|
||||
"com.affine.cmdk.affine.left-sidebar.collapse": "Collapse Left Sidebar",
|
||||
"com.affine.cmdk.affine.navigation.goto-all-pages": "Go to All Pages",
|
||||
"com.affine.cmdk.affine.navigation.open-settings": "Go to Settings",
|
||||
"com.affine.cmdk.affine.navigation.goto-trash": "Go to Trash",
|
||||
"com.affine.cmdk.affine.category.affine.recent": "Recent",
|
||||
"com.affine.cmdk.affine.category.affine.navigation": "Navigation",
|
||||
"com.affine.cmdk.affine.category.affine.pages": "Pages",
|
||||
"com.affine.cmdk.affine.category.affine.creation": "Create",
|
||||
"com.affine.cmdk.affine.category.affine.settings": "Settings",
|
||||
"com.affine.cmdk.affine.category.affine.layout": "Layout Controls",
|
||||
"com.affine.cmdk.affine.category.affine.help": "Help",
|
||||
"com.affine.cmdk.affine.category.affine.updates": "Updates",
|
||||
"com.affine.cmdk.affine.category.affine.general": "General",
|
||||
"com.affine.cmdk.affine.category.editor.insert-object": "Insert Object",
|
||||
"com.affine.cmdk.affine.category.editor.page": "Page Commands",
|
||||
"com.affine.cmdk.affine.category.editor.edgeless": "Edgeless Commands",
|
||||
"com.affine.cmdk.affine.editor.edgeless.presentation-start": "Start Presentation",
|
||||
"com.affine.cmdk.affine.navigation.goto-page-list": "Go to Page List",
|
||||
"com.affine.cmdk.affine.navigation.goto-edgeless-list": "Go to Edgeless List",
|
||||
"com.affine.cmdk.affine.navigation.goto-workspace": "Go to Workspace",
|
||||
"com.affine.cmdk.affine.category.affine.edgeless": "Edgeless",
|
||||
"com.affine.cmdk.affine.category.affine.collections": "Collections",
|
||||
"com.affine.cmdk.affine.import-workspace": "Import Workspace",
|
||||
"com.affine.cmdk.affine.editor.add-to-favourites": "Add to Favourites",
|
||||
"com.affine.cmdk.affine.editor.remove-from-favourites": "Remove from Favourites",
|
||||
"com.affine.cmdk.affine.editor.restore-from-trash": "Restore from Trash",
|
||||
"com.affine.cmdk.affine.font-style.to": "Change Font Style to <1>{{fontFamily}}</1>",
|
||||
"com.affine.cmdk.affine.display-language.to": "Change Display Language to <1>{{language}}</1>",
|
||||
"com.affine.cmdk.affine.client-border-style.to": "Change Client Border Style to <1>{{state}}</1>",
|
||||
"com.affine.cmdk.affine.full-width-layout.to": "Change Full Width Layout to <1>{{state}}</1>",
|
||||
"com.affine.cmdk.affine.noise-background-on-the-sidebar.to": "Change Noise Background On The Sidebar to <1>{{state}}</1>",
|
||||
"com.affine.cmdk.affine.translucent-ui-on-the-sidebar.to": "Change Translucent UI On The Sidebar to <1>{{state}}</1>",
|
||||
"com.affine.cmdk.affine.whats-new": "What's New",
|
||||
"com.affine.cmdk.affine.getting-started": "Getting Started",
|
||||
"com.affine.cmdk.affine.contact-us": "Contact Us",
|
||||
"com.affine.cmdk.affine.restart-to-upgrade": "Restart to Upgrade",
|
||||
"com.affine.share-menu.publish-to-web": "Publish to Web",
|
||||
"com.affine.share-menu.publish-to-web.description": "Let anyone with a link view a read-only version of this page.",
|
||||
"com.affine.share-menu.share-privately": "Share Privately",
|
||||
"com.affine.share-menu.share-privately.description": "Only members of this Workspace can open this link.",
|
||||
"com.affine.share-menu.copy-private-link": "Copy Private Link",
|
||||
"com.affine.auth.sign-out.confirm-modal.title": "Sign out?",
|
||||
"com.affine.auth.sign-out.confirm-modal.description": "After signing out, the Cloud Workspaces associated with this account will be removed from the current device, and signing in again will add them back.",
|
||||
"com.affine.auth.sign-out.confirm-modal.cancel": "Cancel",
|
||||
"com.affine.auth.sign-out.confirm-modal.confirm": "Sign Out"
|
||||
}
|
||||
444
packages/frontend/i18n/src/resources/fr.json
Normal file
444
packages/frontend/i18n/src/resources/fr.json
Normal file
@@ -0,0 +1,444 @@
|
||||
{
|
||||
"Access level": "Permissions",
|
||||
"Add a subpage inside": "Ajouter une sous-page à l'intérieur ",
|
||||
"Add Workspace": "Ajouter un nouvel espace de travail",
|
||||
"Add Workspace Hint": "Sélectionnez le fichier de la base de données déjà existant",
|
||||
"All changes are saved locally": "Les changements sont sauvegardés localement",
|
||||
"All data has been stored in the cloud": "Toutes les données ont été sauvegardées dans le cloud.",
|
||||
"Back to Quick Search": "Retourner à la Recherche Rapide",
|
||||
"Change avatar hint": "Le nouvel avatar s'affichera pour tout le monde.",
|
||||
"Change workspace name hint": "Le nouveau nom s'affichera pour tout le monde.",
|
||||
"Check Our Docs": "Consultez notre documentation",
|
||||
"Cloud Workspace Description": "Toutes les données vont être synchronisées et sauvegardées sur le compte AFFiNE <1>{{email}}</1>",
|
||||
"Collaboration": "Collaboration",
|
||||
"Collaboration Description": "La collaboration avec d'autres membres nécessite AFFiNE Cloud.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.description": "Vérifiez automatiquement pour de nouvelles mises à jour régulièrement.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "Vérifier automatiquement les mises à jours",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.description": "Télécharger les mises à jour automatiquement (pour cet appareil)",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.title": "Télécharger les mises à jour automatiquement",
|
||||
"com.affine.aboutAFFiNE.changelog.description": "Voir le journal des modifications d'AFFiNE",
|
||||
"com.affine.aboutAFFiNE.changelog.title": "Découvrez les nouveautés",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "Nouvelle version disponible",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "Vérifier pour les mises à jour",
|
||||
"com.affine.aboutAFFiNE.community.title": "Communautés",
|
||||
"com.affine.aboutAFFiNE.contact.community": "Communauté AFFiNE",
|
||||
"com.affine.aboutAFFiNE.contact.title": "Contactez-nous",
|
||||
"com.affine.aboutAFFiNE.contact.website": "Site officiel ",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "Confidentialité",
|
||||
"com.affine.aboutAFFiNE.legal.title": "Mentions légales",
|
||||
"com.affine.aboutAFFiNE.legal.tos": "Conditions générales d'utilisation",
|
||||
"com.affine.aboutAFFiNE.subtitle": "Information à propos de AFFiNE",
|
||||
"com.affine.aboutAFFiNE.title": "À propos d'AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "Version",
|
||||
"com.affine.aboutAFFiNE.version.editor.title": "Mode Édition",
|
||||
"com.affine.aboutAFFiNE.version.title": "Version",
|
||||
"com.affine.appearanceSettings.clientBorder.description": "Personnalisez l'apparence de l'application ",
|
||||
"com.affine.appearanceSettings.clientBorder.title": "Style de bordure de l'application",
|
||||
"com.affine.appearanceSettings.color.description": "Choisissez votre thème de couleur",
|
||||
"com.affine.appearanceSettings.color.title": "Thème de couleur",
|
||||
"com.affine.appearanceSettings.date.title": "Date",
|
||||
"com.affine.appearanceSettings.dateFormat.description": "Personnalisez le style de date",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "Format de date",
|
||||
"com.affine.appearanceSettings.font.description": "Choisissez votre police de caractères",
|
||||
"com.affine.appearanceSettings.font.title": "Police de caractères",
|
||||
"com.affine.appearanceSettings.fullWidth.description": "Afficher un maximum de contenu sur la page",
|
||||
"com.affine.appearanceSettings.fullWidth.title": "Disposition en pleine largeur",
|
||||
"com.affine.appearanceSettings.language.description": "Modifier la langue de l'interface",
|
||||
"com.affine.appearanceSettings.language.title": "Langue d'affichage",
|
||||
"com.affine.appearanceSettings.noisyBackground.description": "Utiliser l'effet de bruit d'arrière-plan sur la barre latérale",
|
||||
"com.affine.appearanceSettings.noisyBackground.title": "Bruit d'arrière-plan de la barre latérale",
|
||||
"com.affine.appearanceSettings.sidebar.title": "Barre latérale",
|
||||
"com.affine.appearanceSettings.startWeek.description": "Par défaut, la semaine commence le dimanche",
|
||||
"com.affine.appearanceSettings.startWeek.title": "Commencer la semaine le lundi",
|
||||
"com.affine.appearanceSettings.subtitle": "Personnalisez l'apparence de votre AFFiNE",
|
||||
"com.affine.appearanceSettings.theme.title": "Thème",
|
||||
"com.affine.appearanceSettings.title": "Paramètres d'apparence",
|
||||
"com.affine.appearanceSettings.translucentUI.description": "Utiliser l'effet translucide sur la barre latérale",
|
||||
"com.affine.appearanceSettings.translucentUI.title": "UI translucide sur la barre latérale",
|
||||
"com.affine.appearanceSettings.windowFrame.description": "Personnalisez l'apparence de l'application Windows",
|
||||
"com.affine.appearanceSettings.windowFrame.frameless": "Sans Bords",
|
||||
"com.affine.appearanceSettings.windowFrame.NativeTitleBar": "Barre native",
|
||||
"com.affine.appearanceSettings.windowFrame.title": "Style de fenêtre",
|
||||
"com.affine.appUpdater.downloading": "Téléchargement en cours",
|
||||
"com.affine.appUpdater.installUpdate": "Redémarrez pour installer la mise à jour",
|
||||
"com.affine.appUpdater.openDownloadPage": "Ouvrir la page de téléchargement",
|
||||
"com.affine.appUpdater.updateAvailable": "Mise à jour disponible",
|
||||
"com.affine.appUpdater.whatsNew": "Découvrez les nouveautés !",
|
||||
"com.affine.backButton": "Retour à l'accueil",
|
||||
"com.affine.banner.content": "La démo vous plait ? <1> Télécharger le client AFFiNE </1> pour une expérience complète.",
|
||||
"com.affine.brand.affineCloud": "AFFiNE Cloud",
|
||||
"com.affine.cloudTempDisable.description": "Nous mettons à jour le service AFFiNE Cloud et celui-ci est temporairement indisponible côté client. Si vous souhaitez rester informé des avancements et être informé de la disponibilité du projet, vous pouvez remplir l'<1>inscription au AFFiNE Cloud</1>.",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNE Cloud est actuellement en cours de mise à jour.",
|
||||
"com.affine.collection-bar.action.tooltip.delete": "Supprimer",
|
||||
"com.affine.collection-bar.action.tooltip.edit": "Éditer",
|
||||
"com.affine.collection-bar.action.tooltip.pin": "Épingler à la barre latérale",
|
||||
"com.affine.collection-bar.action.tooltip.unpin": "Désépingler",
|
||||
"com.affine.collectionBar.backToAll": "Retour à tous",
|
||||
"com.affine.confirmModal.button.cancel": "Annuler",
|
||||
"com.affine.currentYear": "Année en cours",
|
||||
"com.affine.deleteLeaveWorkspace.description": "Supprimer l'espace de travail de cet appareil et éventuellement supprimer toutes les données.\n\n",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "Quitter l'espace de travail",
|
||||
"com.affine.draw_with_a_blank_whiteboard": "Dessiner sur un tableau blanc",
|
||||
"com.affine.earlier": "Récemment",
|
||||
"com.affine.editCollection.button.cancel": "Annuler",
|
||||
"com.affine.editCollection.button.create": "Créer",
|
||||
"com.affine.editCollection.save": "Enregistrer",
|
||||
"com.affine.editCollection.saveCollection": "Enregistrer en tant que nouvelle collection",
|
||||
"com.affine.editCollection.updateCollection": "Mettre à jour la collection",
|
||||
"com.affine.editorModeSwitch.tooltip": "Changer",
|
||||
"com.affine.emptyDesc": "Il n'y a pas encore de page ici",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "Annuler",
|
||||
"com.affine.export.error.message": "Veuillez réessayer plus tard.",
|
||||
"com.affine.export.error.title": "Échec lors de l'exportation en raison d'une erreur inattendue",
|
||||
"com.affine.export.success.message": "Veuillez ouvrir le fichier de téléchargement afin de vérifier",
|
||||
"com.affine.export.success.title": "Exporté avec succès",
|
||||
"com.affine.favoritePageOperation.add": "Ajouter aux favoris",
|
||||
"com.affine.favoritePageOperation.remove": "Retirer des favoris",
|
||||
"com.affine.filter": "Filtrer",
|
||||
"com.affine.filter.after": "après",
|
||||
"com.affine.filter.before": "avant",
|
||||
"com.affine.filter.contains all": "contient tout",
|
||||
"com.affine.filter.contains one of": "Contient un élément suivant ",
|
||||
"com.affine.filter.does not contains all": "Ne contient aucun des éléments suivants ",
|
||||
"com.affine.filter.does not contains one of": "Ne contient pas l'un des éléments suivants ",
|
||||
"com.affine.filter.false": "faux",
|
||||
"com.affine.filter.is": "Est",
|
||||
"com.affine.filter.is empty": "est vide",
|
||||
"com.affine.filter.is not empty": "n'est pas vide",
|
||||
"com.affine.filter.is-favourited": "Est favori",
|
||||
"com.affine.filter.save-view": "Sauvegarder la vue",
|
||||
"com.affine.filter.true": "Oui",
|
||||
"com.affine.header.option.add-tag": "Ajouter des Tags",
|
||||
"com.affine.header.option.duplicate": "Dupliquer",
|
||||
"com.affine.helpIsland.contactUs": "Contactez-nous ",
|
||||
"com.affine.helpIsland.gettingStarted": "Commencer",
|
||||
"com.affine.helpIsland.helpAndFeedback": "Aide et feedbacks",
|
||||
"com.affine.import_file": "Support Markdown/Notion",
|
||||
"com.affine.inviteModal.button.cancel": "Annuler",
|
||||
"com.affine.keyboardShortcuts.appendDailyNote": "Ajouter à la note journalière",
|
||||
"com.affine.keyboardShortcuts.bodyText": "Corps du texte",
|
||||
"com.affine.keyboardShortcuts.bold": "Gras",
|
||||
"com.affine.keyboardShortcuts.cancel": "Annuler ",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "Bloc de code",
|
||||
"com.affine.keyboardShortcuts.curveConnector": "Connecteur arrondi",
|
||||
"com.affine.keyboardShortcuts.divider": "Séparateur",
|
||||
"com.affine.keyboardShortcuts.elbowedConnector": "Connecteur coudé",
|
||||
"com.affine.keyboardShortcuts.expandOrCollapseSidebar": "Agrandir/Rabattre la barre latérale",
|
||||
"com.affine.keyboardShortcuts.goBack": "Retour en arrière",
|
||||
"com.affine.keyboardShortcuts.goForward": "Retour en avant",
|
||||
"com.affine.keyboardShortcuts.group": "Grouper",
|
||||
"com.affine.keyboardShortcuts.groupDatabase": "Grouper comme une base de donnée",
|
||||
"com.affine.keyboardShortcuts.hand": "Main",
|
||||
"com.affine.keyboardShortcuts.heading": "Titre {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "Image",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "Augmenter l'indentation",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "Code inline",
|
||||
"com.affine.keyboardShortcuts.italic": "Italique",
|
||||
"com.affine.keyboardShortcuts.link": "Lien hypertexte (avec le texte sélectionné)",
|
||||
"com.affine.keyboardShortcuts.moveDown": "Descendre",
|
||||
"com.affine.keyboardShortcuts.moveUp": "Remonter",
|
||||
"com.affine.keyboardShortcuts.newPage": "Nouvelle page",
|
||||
"com.affine.keyboardShortcuts.note": "Note",
|
||||
"com.affine.keyboardShortcuts.pen": "Stylo",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "Recherche rapide",
|
||||
"com.affine.keyboardShortcuts.redo": "Rétablir",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "Réduire l'indentation du texte",
|
||||
"com.affine.keyboardShortcuts.select": "Sélectionner ",
|
||||
"com.affine.keyboardShortcuts.selectAll": "Sélectionner l'ensemble",
|
||||
"com.affine.keyboardShortcuts.shape": "Forme",
|
||||
"com.affine.keyboardShortcuts.straightConnector": "Connecteur droit",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "Barrer",
|
||||
"com.affine.keyboardShortcuts.subtitle": "Regarder rapidement les raccourcis clavier",
|
||||
"com.affine.keyboardShortcuts.switch": "Changer",
|
||||
"com.affine.keyboardShortcuts.text": "Texte (bientôt disponible)",
|
||||
"com.affine.keyboardShortcuts.title": "Raccourcis clavier",
|
||||
"com.affine.keyboardShortcuts.underline": "Souligner ",
|
||||
"com.affine.keyboardShortcuts.undo": "Annuler",
|
||||
"com.affine.keyboardShortcuts.unGroup": "Dégrouper",
|
||||
"com.affine.keyboardShortcuts.zoomIn": "Agrandir",
|
||||
"com.affine.keyboardShortcuts.zoomOut": "Rétrécir",
|
||||
"com.affine.keyboardShortcuts.zoomTo100": "Zoom à 100%",
|
||||
"com.affine.keyboardShortcuts.zoomToFit": "Zoom à l'échelle",
|
||||
"com.affine.last30Days": "30 derniers jours",
|
||||
"com.affine.last7Days": "7 derniers jours",
|
||||
"com.affine.lastMonth": "Le mois dernier",
|
||||
"com.affine.lastWeek": "La semaine dernière ",
|
||||
"com.affine.lastYear": "L'année dernière ",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}} sera déplacé à la corbeille ",
|
||||
"com.affine.moveToTrash.confirmModal.title": "Supprimer la page ?",
|
||||
"com.affine.moveToTrash.title": "Déplacer à la corbeille",
|
||||
"com.affine.nameWorkspace.button.cancel": "Annuler ",
|
||||
"com.affine.nameWorkspace.button.create": "Créer ",
|
||||
"com.affine.nameWorkspace.description": "Un espace de travail est votre espace virtuel pour capturer, créer et planifier aussi bien seul qu'en équipe.",
|
||||
"com.affine.nameWorkspace.placeholder": "Définir un nom pour l'espace de travail",
|
||||
"com.affine.nameWorkspace.title": "Nommer l'espace de travail",
|
||||
"com.affine.new_edgeless": "Nouvelle page sans bords",
|
||||
"com.affine.new_import": "Importer",
|
||||
"com.affine.notFoundPage.backButton": "Retour à l'accueil",
|
||||
"com.affine.notFoundPage.title": "Erreur 404 - Page non trouvée",
|
||||
"com.affine.onboarding.title1": "Tableau blanc et documents fusionnés",
|
||||
"com.affine.onboarding.title2": "Un mode d'édition intuitif et robuste basé sur des blocs",
|
||||
"com.affine.onboarding.videoDescription1": "Basculez facilement entre le mode Page pour de la création de documents structurés et le mode Tableau blanc pour de l'expression visuelle libre d'idées créatives.",
|
||||
"com.affine.onboarding.videoDescription2": "Créez facilement des documents structurés, à l'aide d'une interface modulaire où l'on peut faire glisser et déposer des blocs de texte, des images et d'autres contenus.",
|
||||
"com.affine.openPageOperation.newTab": "Ouvrir dans un nouvel onglet",
|
||||
"com.affine.pageMode.all": "tout",
|
||||
"com.affine.pageMode.edgeless": "Mode sans bords",
|
||||
"com.affine.pageMode.page": "Page",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "Annuler ",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "Désactiver",
|
||||
"com.affine.publicLinkDisableModal.description": "Désactiver ce lien public empêchera à quiconque avec le lien d’accéder à cette page.",
|
||||
"com.affine.publicLinkDisableModal.title": "Désactiver le lien public ?",
|
||||
"com.affine.rootAppSidebar.collections": "Collections",
|
||||
"com.affine.rootAppSidebar.favorites": "Favoris ",
|
||||
"com.affine.rootAppSidebar.others": "Autres",
|
||||
"com.affine.setDBLocation.button.customize": "Parcourir",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "Emplacement par défaut",
|
||||
"com.affine.setDBLocation.description": "Sélectionnez l'endroit où vous souhaitez créer votre espace de travail. Les données de l'espace de travail sont enregistrées localement par défaut.",
|
||||
"com.affine.setDBLocation.title": "Définir l'emplacement de la base de données",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "Par défaut, elle sera enregistrée sous {{location}}",
|
||||
"com.affine.setSyncingMode.button.continue": "Continuer",
|
||||
"com.affine.setSyncingMode.cloud": "Synchroniser parmi plusieurs appareils avec AFFiNE Cloud",
|
||||
"com.affine.setSyncingMode.deviceOnly": "Utiliser seulement sur l'appareil actuel",
|
||||
"com.affine.setSyncingMode.title.added": "Ajouté avec succès",
|
||||
"com.affine.setSyncingMode.title.created": "Créé avec succès",
|
||||
"com.affine.settings.appearance": "Apparence",
|
||||
"com.affine.settings.auto-check-description": "Si activé, l'option cherchera automatiquement pour les nouvelles versions à intervalles réguliers",
|
||||
"com.affine.settings.auto-download-description": "Si activé, les nouvelles versions seront automatiquement téléchargées sur l'appareil actuel",
|
||||
"com.affine.settings.member-tooltip": "Activer AFFiNE Cloud pour collaborer ",
|
||||
"com.affine.settings.remove-workspace": "Supprimer l'espace de travail",
|
||||
"com.affine.settings.storage.db-location.change-hint": "Cliquer pour changer l'emplacement du stockage ",
|
||||
"com.affine.settings.storage.description": "Vérifier ou changer l'emplacement du lieu de stockage",
|
||||
"com.affine.settings.storage.description-alt": "Vérifier ou changer l'emplacement du lieu de stockage. Cliquer pour éditer le chemin d'accès.",
|
||||
"com.affine.settings.suggestion": "Besoin de plus de personnalisation ? Vous pouvez nous les proposer via la communauté.",
|
||||
"com.affine.settings.workspace.description": "Vous pouvez personnaliser votre espace ici.",
|
||||
"com.affine.settings.workspace.not-owner": "L'icône et le nom peuvent seulement être modifiés par le propriétaire de l'Espace de groupe. Les modifications seront visibles par tous",
|
||||
"com.affine.settings.workspace.publish-tooltip": "Activer AFFiNE Cloud pour publier cet espace de travail en ligne",
|
||||
"com.affine.settings.workspace.storage.tip": "Cliquer pour changer l'emplacement du stockage ",
|
||||
"com.affine.settingSidebar.settings.general": "Général",
|
||||
"com.affine.settingSidebar.settings.workspace": "Espace de travail",
|
||||
"com.affine.settingSidebar.title": "Paramètres",
|
||||
"com.affine.shortcutsTitle.edgeless": "Mode sans bords",
|
||||
"com.affine.shortcutsTitle.general": "Général",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Syntaxe Markdown",
|
||||
"com.affine.shortcutsTitle.page": "Page",
|
||||
"com.affine.sidebarSwitch.collapse": "Rabattre la barre latérale",
|
||||
"com.affine.sidebarSwitch.expand": "Agrandir la barre latérale",
|
||||
"com.affine.themeSettings.dark": "Sombre",
|
||||
"com.affine.themeSettings.light": "Clair",
|
||||
"com.affine.themeSettings.system": "Système",
|
||||
"com.affine.toastMessage.addedFavorites": "Ajouté aux favoris ",
|
||||
"com.affine.toastMessage.edgelessMode": "Mode sans bords",
|
||||
"com.affine.toastMessage.movedTrash": "Déplacé dans la corbeille ",
|
||||
"com.affine.toastMessage.pageMode": "Mode page",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "Supprimé définitivement ",
|
||||
"com.affine.toastMessage.removedFavorites": "Retiré des Favoris ",
|
||||
"com.affine.toastMessage.restored": "{{title}} a été restauré ",
|
||||
"com.affine.toastMessage.successfullyDeleted": "Supprimé avec succès",
|
||||
"com.affine.today": "Aujourd'hui",
|
||||
"com.affine.trashOperation.delete": "Supprimer objet ",
|
||||
"com.affine.trashOperation.delete.description": "Une fois supprimé, vous ne pouvez pas retourner en arrière. Confirmez-vous la suppression ? ",
|
||||
"com.affine.trashOperation.delete.title": "Supprimer définitivement",
|
||||
"com.affine.trashOperation.deletePermanently": "Supprimer définitivement",
|
||||
"com.affine.trashOperation.restoreIt": "Restaurer ",
|
||||
"com.affine.workspace.cannot-delete": "Vous ne pouvez pas supprimer le dernier Espace de travail",
|
||||
"com.affine.workspaceDelete.button.cancel": "Annuler ",
|
||||
"com.affine.workspaceDelete.button.delete": "Supprimer objet ",
|
||||
"com.affine.workspaceDelete.description": "Attention, la suppression de <1>{{workspace}}</1> est irréversible. Le contenu sera perdu.",
|
||||
"com.affine.workspaceDelete.description2": "La suppression de <1>{{workspace}}</1> aura pour effet de supprimer les données locales et les données dans le cloud. Attention, cette opération est irréversible.",
|
||||
"com.affine.workspaceDelete.placeholder": "Entrez le nom de l'espace de travail pour confirmer",
|
||||
"com.affine.workspaceDelete.title": "Supprimer l'espace de travail",
|
||||
"com.affine.workspaceLeave.button.cancel": "Annuler ",
|
||||
"com.affine.workspaceLeave.button.leave": "Quitter",
|
||||
"com.affine.workspaceLeave.description": "Une fois quitté, vous ne pourrez plus accéder au contenu de cet espace de travail.",
|
||||
"com.affine.workspaceSubPath.all": "Toutes les pages",
|
||||
"com.affine.workspaceSubPath.trash": "Corbeille ",
|
||||
"com.affine.workspaceType.cloud": "Espace de travail distant",
|
||||
"com.affine.workspaceType.joined": "L'espace de travail a été rejoint",
|
||||
"com.affine.workspaceType.local": "Espace de travail local",
|
||||
"com.affine.workspaceType.offline": "Disponible hors ligne",
|
||||
"com.affine.write_with_a_blank_page": "Écrire sur une nouvelle page",
|
||||
"com.affine.yesterday": "Hier",
|
||||
"Confirm": "Confirmer",
|
||||
"Connector": "Connecteur (bientôt disponible) ",
|
||||
"Continue with Google": "Se connecter avec Google ",
|
||||
"Convert to ": "Convertir en ",
|
||||
"Copied link to clipboard": "Lien copié dans le presse-papier",
|
||||
"Copy": "Copier",
|
||||
"Copy Link": "Copier le lien",
|
||||
"core": "l'essentiel",
|
||||
"Create": "Créer ",
|
||||
"Create Or Import": "Créer ou importer",
|
||||
"Create Shared Link Description": "Créez un lien que vous pouvez facilement partager avec n'importe qui.",
|
||||
"Create your own workspace": "Créer votre propre espace de travail",
|
||||
"Created": "Objet créé ",
|
||||
"Created with": "Créé avec",
|
||||
"Data sync mode": "Mode de synchronisation des données",
|
||||
"DB_FILE_ALREADY_LOADED": "Le fichier de base de données a déjà été chargé",
|
||||
"DB_FILE_INVALID": "Fichier de base de données invalide",
|
||||
"DB_FILE_MIGRATION_FAILED": "La migration du fichier de base de données a échoué",
|
||||
"DB_FILE_PATH_INVALID": "Le chemin d'accès du fichier de base de données est invalide",
|
||||
"Delete": "Supprimer objet ",
|
||||
"Delete Member?": "Supprimer le membre ?",
|
||||
"Delete Workspace Label Hint": "Après la suppression de cet espace de travail, vous supprimerez de manière permanente tout le contenu de tous les utilisateurs. En aucun cas le contenu de cet espace de travail ne pourra être restauré.",
|
||||
"Delete Workspace placeholder": "Veuillez écrire \"Delete\" pour confirmer",
|
||||
"Disable": "Désactiver",
|
||||
"Disable Public Link": "Désactiver le lien public",
|
||||
"Disable Public Sharing": "Désactiver le Partage Public ",
|
||||
"Download all data": "Télécharger toutes les données",
|
||||
"Download core data": "Télécharger les données principales",
|
||||
"Download data": "Télécharger les données {{CoreOrAll}}",
|
||||
"Download data Description1": "Cela prend davantage d’espace sur votre appareil.",
|
||||
"Download data Description2": "Cela prend peu d’espace sur votre appareil.",
|
||||
"Edgeless": "Mode sans bords",
|
||||
"Edit": "Éditer",
|
||||
"Edit Filter": "Editer le filtre",
|
||||
"emptyAllPages": "Cet espace de travail est vide. Créez une nouvelle page pour commencer l'édition.",
|
||||
"emptyAllPagesClient": "Cliquez sur le bouton <1>$t(New Page)</1> ou bien, appuyez sur le raccourci clavier <3>{{shortcut}}</3> afin de créer votre première page.",
|
||||
"emptyFavorite": "Cliquez sur Ajouter aux Favoris et la page apparaitra ici.",
|
||||
"emptySharedPages": "Les pages partagées apparaîtront ici",
|
||||
"emptyTrash": "Cliquez sur Ajouter à la corbeille et la page apparaitra ici.",
|
||||
"Enable": "Activer",
|
||||
"Enable AFFiNE Cloud": "Activer AFFiNE Cloud",
|
||||
"Enable AFFiNE Cloud Description": "Si cette option est activée, les données de cet espace de travail seront sauvegardées et synchronisées via AFFiNE Cloud.",
|
||||
"Enable cloud hint": "Les fonctions suivantes nécessitent AFFiNE Cloud. Toutes les données sont actuellement stockées sur cet appareil. Vous pouvez activer AFFiNE Cloud pour cet espace de travail afin de le garder synchronisé avec le Cloud.",
|
||||
"Enabled success": "Activation réussie",
|
||||
"Exclude from filter": "Exclure du filtre",
|
||||
"Export": "Exporter ",
|
||||
"Export AFFiNE backup file": "Exporter un fichier de sauvegarde AFFiNE",
|
||||
"Export Description": "Vous pouvez exporter l'intégralité des données de l'espace de travail à titre de sauvegarde ; les données ainsi exportées peuvent être réimportées.",
|
||||
"Export Shared Pages Description": "Télécharger une copie de la version actuelle pour la partager avec les autres.",
|
||||
"Export success": "Exporté avec succès",
|
||||
"Export to HTML": "Exporter en HTML",
|
||||
"Export to Markdown": "Exporter en Markdown",
|
||||
"Export to PDF": "Exporter en PDF",
|
||||
"Export to PNG": "Exporter en PNG",
|
||||
"Export Workspace": "L'exportation de l'espace de travail <1>{{workspace}}</1> sera bientôt disponible.",
|
||||
"Failed to publish workspace": "La publication de l'espace de travail a échoué",
|
||||
"Favorite": "Favori",
|
||||
"Favorite pages for easy access": "Pages favorites pour un accès rapide",
|
||||
"Favorited": "Ajouté aux favoris",
|
||||
"FILE_ALREADY_EXISTS": "Fichier déjà existant",
|
||||
"Find 0 result": "Aucun résultat trouvé ",
|
||||
"Find results": "{{number}} résultats trouvés",
|
||||
"Force Sign Out": "Forcer la déconnexion",
|
||||
"Get in touch!": "Contactez-nous ! ",
|
||||
"Get in touch! Join our communities": "Contactez-nous ! Rejoignez nos communautés.",
|
||||
"Get in touch! Join our communities.": "Contactez-nous ! Rejoignez nos communautés.",
|
||||
"Got it": "Compris",
|
||||
"How is AFFiNE Alpha different?": "Quelles sont les différences avec AFFiNE Alpha ?",
|
||||
"Import": "Importer ",
|
||||
"Info": "Information",
|
||||
"Invite": "Inviter",
|
||||
"Invite Members": "Inviter des membres",
|
||||
"Invite placeholder": "Rechercher une adresse mail (compatible uniquement avec Gmail)",
|
||||
"is a Cloud Workspace": "est un espace de travail distant",
|
||||
"is a Local Workspace": "est un espace de travail local",
|
||||
"It takes up little space on your device": "Prend peu d’espace sur l'appareil.",
|
||||
"It takes up little space on your device.": "Prend peu d’espace sur l'appareil.",
|
||||
"It takes up more space on your device": "Prend davantage d’espace sur l'appareil.",
|
||||
"It takes up more space on your device.": "Cela prend davantage d’espace sur votre appareil.",
|
||||
"Jump to": "Passer à ",
|
||||
"Loading": "Chargement...",
|
||||
"Local Workspace Description": "Toutes les données sont stockées sur cet appareil. Vous pouvez activer AFFiNE Cloud pour garder les données de cet espace de travail synchronisé dans le cloud.",
|
||||
"login success": "Connexion réussie",
|
||||
"Member": "Membre",
|
||||
"Member has been removed": "{{name}} a été supprimé",
|
||||
"Members": "Membres",
|
||||
"Members hint": "Gérez les membres ici, invitez des nouveaux membres par e-mail.",
|
||||
"mobile device": "Il semblerait que vous naviguiez sur un appareil mobile.",
|
||||
"mobile device description": "Nous travaillons toujours sur le support des appareils mobiles. Ainsi, nous vous recommandons d'utiliser un ordinateur.",
|
||||
"Move folder": "Déplacer le dossier",
|
||||
"Move folder hint": "Sélectionnez le nouveau chemin d'accès pour le stockage ",
|
||||
"Move folder success": "Le déplacement du fichier a été réalisé avec succès",
|
||||
"Move page to": "Déplacer la page vers ...",
|
||||
"Move page to...": "Déplacer la page vers ...",
|
||||
"Move to": "Déplacer vers",
|
||||
"Moved to Trash": "Déplacé dans la corbeille ",
|
||||
"My Workspaces": "Mes espaces de travail",
|
||||
"Navigation Path": "Chemin d'accès",
|
||||
"New Keyword Page": "Nouvelle page '{{query}}'",
|
||||
"New Page": "Nouvelle page",
|
||||
"New Workspace": "Nouvel espace de travail ",
|
||||
"No item": "Aucun objet ",
|
||||
"Non-Gmail": "Seul Gmail est supporté",
|
||||
"None yet": "Aucun pour l'instant",
|
||||
"Not now": "Pas maintenant",
|
||||
"Open folder": "Ouvrir le dossier",
|
||||
"Open folder hint": "Vérifiez l'emplacement du dossier de stockage.",
|
||||
"Open Workspace Settings": "Ouvrir les paramètres de l'espace de travail",
|
||||
"Organize pages to build knowledge": "Organisez vos pages pour construire l'entièreté de votre savoir",
|
||||
"Owner": "Propriétaire",
|
||||
"Paper": "Papier",
|
||||
"Pending": "En attente",
|
||||
"Pivots": "Arborescence",
|
||||
"Please make sure you are online": "Vérifiez que vous êtes bien en ligne",
|
||||
"Publish": "Publier",
|
||||
"Publish to web": "Publier sur internet",
|
||||
"Published Description": "L'espace de travail actuel a été publié sur Internet. Toute personne disposant du lien peut consulter le contenu.",
|
||||
"Published hint": "Les visiteurs peuvent prévisualiser le contenu via le lien fourni",
|
||||
"Published to Web": "Publié sur Internet",
|
||||
"Publishing": "Publier sur le web nécessite le service AFFiNE Cloud.",
|
||||
"Publishing Description": "Après avoir publié sur le net, toute personne disposant du lien pourra consulter le contenu.",
|
||||
"Quick search": "Recherche rapide",
|
||||
"Quick search placeholder": "Recherche Rapide ...",
|
||||
"Quick search placeholder2": "Rechercher dans {{workspace}}",
|
||||
"Recent": "Récent",
|
||||
"recommendBrowser": "Pour une expérience optimale, nous vous recommandons le navigateur <1>Chrome</1>.",
|
||||
"Remove from Pivots": "Retirer de l'Arborescence",
|
||||
"Remove from workspace": "Retirer de l'espace de travail",
|
||||
"Remove special filter": "Retirer le filtre spécial",
|
||||
"Rename": "Renommer",
|
||||
"Restart Install Client Update": "Redémarrez pour installer la mise à jour",
|
||||
"Retain cached cloud data": "Conserver les données mises en cache dans le cloud",
|
||||
"Retain local cached data": "Conserver les données du cache local",
|
||||
"RFP": "Les pages peuvent librement être rajoutées à/retirées de l'Arborescence, tout en restant accessible depuis \"Toutes les pages\".",
|
||||
"Saved then enable AFFiNE Cloud": "Toutes les modifications sont sauvegardées localement, cliquez ici pour activer la sauvegarde AFFiNE Cloud",
|
||||
"Set up an AFFiNE account to sync data": "Configurer un compte AFFiNE pour synchroniser les données",
|
||||
"Share Menu Public Workspace Description1": "Invitez d'autres personnes à rejoindre cet espace de travail ou publiez-le sur internet.",
|
||||
"Share Menu Public Workspace Description2": "L'espace de travail actuel a été publié sur le web en tant qu'espace de travail public.",
|
||||
"Share with link": "Partager un lien",
|
||||
"Shared Pages": "Pages partagées",
|
||||
"Shared Pages Description": "Le service de partage de page public nécessite AFFiNE Cloud.",
|
||||
"Shared Pages In Public Workspace Description": "L'intégralité de cet espace de travail a été publiée sur internet et peut être modifiée via les <1>Paramètres de l'espace de travail</1>.",
|
||||
"Shortcuts": "Raccourcis",
|
||||
"Sign in": "Se connecter à AFFiNE Cloud",
|
||||
"Sign in and Enable": "Se connecter et activer",
|
||||
"Sign out": "Se déconnecter",
|
||||
"Sign out description": "Se déconnecter provoquera la perte du contenu non synchronisé.",
|
||||
"Skip": "Passer",
|
||||
"Stay logged out": "Rester déconnecté",
|
||||
"Sticky": "Post-it",
|
||||
"still designed": "(Cette page est toujours en cours de conception.)",
|
||||
"Stop publishing": "Arrêter de publier",
|
||||
"Storage": "Stockage",
|
||||
"Storage and Export": "Stockage et Export",
|
||||
"Storage Folder": "Dossier du stockage ",
|
||||
"Sync": "Synchroniser",
|
||||
"Synced with AFFiNE Cloud": "Synchronisé avec AFFiNE Cloud",
|
||||
"Tags": "Tags",
|
||||
"Title": "Titre ",
|
||||
"UNKNOWN_ERROR": "Erreur inconnue",
|
||||
"Unpin": "Désépingler",
|
||||
"Unpublished hint": "Une fois publié sur internet, les visiteurs peuvent voir le contenu via le lien fourni.",
|
||||
"Untitled": "Sans titre",
|
||||
"Update Available": "Mis à jour disponible",
|
||||
"Update workspace name success": "L'espace de travail à été renommé avec succès",
|
||||
"Updated": "Mis à jour",
|
||||
"upgradeBrowser": "Veuillez installer la dernière version de Chrome pour bénéficier d'une expérience optimale.",
|
||||
"Upload": "Uploader ",
|
||||
"Users": "Utilisateur",
|
||||
"View Navigation Path": "Voir le Chemin d'Accès",
|
||||
"Wait for Sync": "Attendez la synchronisation",
|
||||
"will delete member": "supprimera le membre",
|
||||
"Workspace Avatar": "Avatar de l'espace de travail",
|
||||
"Workspace Icon": "Icône espace de travail",
|
||||
"Workspace Name": "Nom de l'espace de travail",
|
||||
"Workspace Not Found": "L'epace de travail n'a pas été trouvé",
|
||||
"Workspace Owner": "Propriétaire de l’espace de travail ",
|
||||
"Workspace Profile": "Profil de l'Espace de travail",
|
||||
"Workspace saved locally": "{{name}} est sauvegardé localement",
|
||||
"Workspace Settings": "Paramètres de l'espace de travail",
|
||||
"Workspace Settings with name": "Paramètres de {{name}}",
|
||||
"Workspace Type": "Type de l'espace de travail",
|
||||
"You cannot delete the last workspace": "Vous ne pouvez pas supprimer le dernier Espace de travail"
|
||||
}
|
||||
94
packages/frontend/i18n/src/resources/index.ts
Normal file
94
packages/frontend/i18n/src/resources/index.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
// Run `yarn run download-resources` to regenerate.
|
||||
// If you need to update the code, please edit `i18n/src/scripts/download.ts` inside your project.
|
||||
import de from './de.json';
|
||||
import en from './en.json';
|
||||
import fr from './fr.json';
|
||||
import ja from './ja.json';
|
||||
import ko from './ko.json';
|
||||
import ru from './ru.json';
|
||||
import zh_Hans from './zh-Hans.json';
|
||||
import zh_Hant from './zh-Hant.json';
|
||||
|
||||
export const LOCALES = [
|
||||
{
|
||||
id: 1000040010,
|
||||
name: 'Korean (South Korea)',
|
||||
tag: 'ko',
|
||||
originalName: '한국어(대한민국)',
|
||||
flagEmoji: '🇰🇷',
|
||||
base: false,
|
||||
completeRate: 0.6,
|
||||
res: ko,
|
||||
},
|
||||
{
|
||||
id: 1000040001,
|
||||
name: 'English',
|
||||
tag: 'en',
|
||||
originalName: 'English',
|
||||
flagEmoji: '🇬🇧',
|
||||
base: true,
|
||||
completeRate: 0.981,
|
||||
res: en,
|
||||
},
|
||||
{
|
||||
id: 1000040003,
|
||||
name: 'Traditional Chinese',
|
||||
tag: 'zh-Hant',
|
||||
originalName: '繁體中文',
|
||||
flagEmoji: '🇭🇰',
|
||||
base: false,
|
||||
completeRate: 0.981,
|
||||
res: zh_Hant,
|
||||
},
|
||||
{
|
||||
id: 1000040004,
|
||||
name: 'Simplified Chinese',
|
||||
tag: 'zh-Hans',
|
||||
originalName: '简体中文',
|
||||
flagEmoji: '🇨🇳',
|
||||
base: false,
|
||||
completeRate: 0.905,
|
||||
res: zh_Hans,
|
||||
},
|
||||
{
|
||||
id: 1000040006,
|
||||
name: 'French',
|
||||
tag: 'fr',
|
||||
originalName: 'français',
|
||||
flagEmoji: '🇫🇷',
|
||||
base: false,
|
||||
completeRate: 0.955,
|
||||
res: fr,
|
||||
},
|
||||
{
|
||||
id: 1000040009,
|
||||
name: 'German',
|
||||
tag: 'de',
|
||||
originalName: 'Deutsch',
|
||||
flagEmoji: '🇩🇪',
|
||||
base: false,
|
||||
completeRate: 0.784,
|
||||
res: de,
|
||||
},
|
||||
{
|
||||
id: 1000040011,
|
||||
name: 'Russian',
|
||||
tag: 'ru',
|
||||
originalName: 'русский',
|
||||
flagEmoji: '🇷🇺',
|
||||
base: false,
|
||||
completeRate: 0.635,
|
||||
res: ru,
|
||||
},
|
||||
{
|
||||
id: 1000040014,
|
||||
name: 'Japanese',
|
||||
tag: 'ja',
|
||||
originalName: '日本語',
|
||||
flagEmoji: '🇯🇵',
|
||||
base: false,
|
||||
completeRate: 0.652,
|
||||
res: ja,
|
||||
},
|
||||
] as const;
|
||||
296
packages/frontend/i18n/src/resources/ja.json
Normal file
296
packages/frontend/i18n/src/resources/ja.json
Normal file
@@ -0,0 +1,296 @@
|
||||
{
|
||||
"Access level": "アクセスレベル",
|
||||
"Add a subpage inside": "内部にサブページを追加",
|
||||
"Add Workspace": "ワークスペースの追加",
|
||||
"Add Workspace Hint": "既存のワークスペースを選択",
|
||||
"All changes are saved locally": "すべての変更はローカルに保存されます",
|
||||
"All data has been stored in the cloud": "すべてのデータはクラウドに保存されています",
|
||||
"Back to Quick Search": "クイック検索に戻る",
|
||||
"Change avatar hint": "メンバー全員のアバターを変更",
|
||||
"Change workspace name hint": "メンバー全員の名前を変更",
|
||||
"Check Our Docs": "ドキュメントを確認しよう",
|
||||
"Cloud Workspace Description": "すべてのデータは、AFFiNEアカウント<1>{{email}}</1>に同期して保存されます",
|
||||
"Collaboration": "コラボレーション",
|
||||
"Collaboration Description": "他のメンバーとコラボレーションするにはAFFiNEクラウドサービスが必要です",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNEコミュニティ",
|
||||
"com.affine.aboutAFFiNE.contact.website": "公式サイト",
|
||||
"com.affine.aboutAFFiNE.title": "AFFiNEについて",
|
||||
"com.affine.appearanceSettings.sidebar.title": "サイドバ-",
|
||||
"com.affine.appUpdater.downloading": "ダウンロード中",
|
||||
"com.affine.appUpdater.installUpdate": "再起動してアップデートをインストールする",
|
||||
"com.affine.appUpdater.openDownloadPage": "ダウンロードページを開く",
|
||||
"com.affine.appUpdater.updateAvailable": "アップデート可能",
|
||||
"com.affine.appUpdater.whatsNew": "新着情報を見る",
|
||||
"com.affine.backButton": "ホームに戻る",
|
||||
"com.affine.banner.content": "デモをお楽しみですか?完全なエクスペリエンスを得るには<1>AFFiNEクライアントをダウンロード</1>してください。",
|
||||
"com.affine.brand.affineCloud": "AFFiNEクラウド",
|
||||
"com.affine.cloudTempDisable.description": "AFFiNEクラウドサービスのバージョンアップを行っており、クライアント側で一時的に利用できない状態になっています。進捗状況などに関する通知をご希望の方は<1>AFFiNEコミュニティ</1>にご参加ください。",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNEクラウドは現在アップグレード中です。",
|
||||
"com.affine.confirmModal.button.cancel": "キャンセル",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "ワークスペースから退出",
|
||||
"com.affine.editCollection.button.cancel": "キャンセル",
|
||||
"com.affine.editCollection.button.create": "作成",
|
||||
"com.affine.editCollection.save": "保存",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "キャンセル",
|
||||
"com.affine.favoritePageOperation.add": "お気に入りに追加する",
|
||||
"com.affine.favoritePageOperation.remove": "お気に入りから削除",
|
||||
"com.affine.helpIsland.contactUs": "お問い合わせ",
|
||||
"com.affine.helpIsland.gettingStarted": "始めましょう",
|
||||
"com.affine.helpIsland.helpAndFeedback": "ヘルプとフィードバック",
|
||||
"com.affine.inviteModal.button.cancel": "キャンセル",
|
||||
"com.affine.keyboardShortcuts.bodyText": "本文テキスト",
|
||||
"com.affine.keyboardShortcuts.bold": "太字",
|
||||
"com.affine.keyboardShortcuts.cancel": "キャンセル",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "コードブロック",
|
||||
"com.affine.keyboardShortcuts.divider": "区分線",
|
||||
"com.affine.keyboardShortcuts.heading": "見出し {{number}}",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "インデントを増やす",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "インラインコード",
|
||||
"com.affine.keyboardShortcuts.italic": "斜体",
|
||||
"com.affine.keyboardShortcuts.link": "ハイパーリンク (選択したテキストを含む)",
|
||||
"com.affine.keyboardShortcuts.newPage": "新規ページ",
|
||||
"com.affine.keyboardShortcuts.pen": "ペン(近日公開)",
|
||||
"com.affine.keyboardShortcuts.redo": "やり直し",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "インデントを減らす",
|
||||
"com.affine.keyboardShortcuts.select": "選択",
|
||||
"com.affine.keyboardShortcuts.shape": "シェイプ",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "打ち消し線",
|
||||
"com.affine.keyboardShortcuts.text": "テキスト(近日公開)",
|
||||
"com.affine.keyboardShortcuts.title": "キーボードショートカット",
|
||||
"com.affine.keyboardShortcuts.underline": "下線",
|
||||
"com.affine.keyboardShortcuts.undo": "元に戻す",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}}はゴミ箱に移動されます",
|
||||
"com.affine.moveToTrash.confirmModal.title": "ページを削除しますか?",
|
||||
"com.affine.moveToTrash.title": "ゴミ箱に移動",
|
||||
"com.affine.nameWorkspace.button.cancel": "キャンセル",
|
||||
"com.affine.nameWorkspace.button.create": "作成",
|
||||
"com.affine.nameWorkspace.description": "ワークスペースは、一人で、あるいはチームで、創造し、計画するための仮想空間です",
|
||||
"com.affine.nameWorkspace.placeholder": "ワークスペース名を設定",
|
||||
"com.affine.nameWorkspace.title": "ワークスペースに名前をつける",
|
||||
"com.affine.notFoundPage.backButton": "ホームに戻る",
|
||||
"com.affine.notFoundPage.title": "404 - ページが見つかりません",
|
||||
"com.affine.onboarding.title1": "ハイパーマージされたホワイトボードとドキュメント",
|
||||
"com.affine.onboarding.title2": "直感的で堅牢なブロックベースの編集",
|
||||
"com.affine.onboarding.videoDescription1": "構造化されたドキュメントを作成するためのページモードと、創造的なアイデアを自由な形式で視覚的に表現するためのホワイトボードモードを簡単に切り替えることができます",
|
||||
"com.affine.onboarding.videoDescription2": "モジュール式インターフェイスを使用してテキスト、画像、その他のコンテンツのブロックをドラッグ&ドロップすることで、構造化ドキュメントを簡単に作成できます",
|
||||
"com.affine.openPageOperation.newTab": "新しいタブで開く",
|
||||
"com.affine.pageMode.all": "すべて",
|
||||
"com.affine.pageMode.edgeless": "エッジレス",
|
||||
"com.affine.pageMode.page": "ページ",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "キャンセル",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "無効",
|
||||
"com.affine.publicLinkDisableModal.description": "このパブリック リンクを無効にすると、リンクを知っている誰もがこのページにアクセスできなくなります",
|
||||
"com.affine.publicLinkDisableModal.title": "パブリックリンクを無効にしますか?",
|
||||
"com.affine.rootAppSidebar.favorites": "お気に入り",
|
||||
"com.affine.rootAppSidebar.others": "その他",
|
||||
"com.affine.setDBLocation.button.customize": "カスタマイズ",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "デフォルトの場所",
|
||||
"com.affine.setDBLocation.description": "ワークスペースを作成する場所を選択します。ワークスペースのデータは、デフォルトでローカルに保存されます",
|
||||
"com.affine.setDBLocation.title": "データベースの場所を設定",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "デフォルトでは {{location}} に保存されます",
|
||||
"com.affine.setSyncingMode.button.continue": "続行",
|
||||
"com.affine.setSyncingMode.cloud": "AFFiNEクラウドでデバイス間を同期する",
|
||||
"com.affine.setSyncingMode.deviceOnly": "現在の端末でのみ使用",
|
||||
"com.affine.setSyncingMode.title.added": "正常に追加されました",
|
||||
"com.affine.setSyncingMode.title.created": "正常に作成されました",
|
||||
"com.affine.settingSidebar.settings.general": "一般",
|
||||
"com.affine.settingSidebar.title": "設定",
|
||||
"com.affine.shortcutsTitle.edgeless": "エッジレス",
|
||||
"com.affine.shortcutsTitle.general": "一般",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown構文",
|
||||
"com.affine.shortcutsTitle.page": "ページ",
|
||||
"com.affine.sidebarSwitch.collapse": "サイドバーを折りたたむ",
|
||||
"com.affine.sidebarSwitch.expand": "サイドバーを展開",
|
||||
"com.affine.themeSettings.dark": "ダーク",
|
||||
"com.affine.themeSettings.light": "ライト",
|
||||
"com.affine.themeSettings.system": "システム",
|
||||
"com.affine.toastMessage.addedFavorites": "お気に入りに追加されました",
|
||||
"com.affine.toastMessage.edgelessMode": "エッジレスモード",
|
||||
"com.affine.toastMessage.movedTrash": "ゴミ箱に移動した",
|
||||
"com.affine.toastMessage.pageMode": "ページモード",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "完全に削除されました",
|
||||
"com.affine.toastMessage.removedFavorites": "お気に入りから削除しました",
|
||||
"com.affine.toastMessage.restored": "{{title}}を復元しました",
|
||||
"com.affine.toastMessage.successfullyDeleted": "正常に削除されました",
|
||||
"com.affine.trashOperation.delete": "削除",
|
||||
"com.affine.trashOperation.delete.description": "一度削除すると、この操作を元に戻すことはできません。よろしいですか?",
|
||||
"com.affine.trashOperation.delete.title": "完全に削除",
|
||||
"com.affine.trashOperation.deletePermanently": "完全に削除",
|
||||
"com.affine.trashOperation.restoreIt": "復元",
|
||||
"com.affine.workspaceDelete.button.cancel": "キャンセル",
|
||||
"com.affine.workspaceDelete.button.delete": "削除",
|
||||
"com.affine.workspaceDelete.description": "削除 <1>{{workspace}}</1> は元に戻すことができません。慎重に続行してください。すべての内容が失われます",
|
||||
"com.affine.workspaceDelete.description2": "<1>{{workspace}}</1> を削除すると、ローカルデータとクラウドデータの両方が削除されます。この操作は元に戻すことができません。注意して続行してください",
|
||||
"com.affine.workspaceDelete.placeholder": "確認のためにワークスペース名を入力してください",
|
||||
"com.affine.workspaceDelete.title": "ワークスペースの削除",
|
||||
"com.affine.workspaceLeave.button.cancel": "キャンセル",
|
||||
"com.affine.workspaceLeave.button.leave": "退出",
|
||||
"com.affine.workspaceLeave.description": "退会すると、このワークスペースのコンテンツにアクセスできなくなります",
|
||||
"com.affine.workspaceSubPath.all": "すべてのページ",
|
||||
"com.affine.workspaceSubPath.trash": "ゴミ箱",
|
||||
"com.affine.workspaceType.cloud": "クラウドワークスペース",
|
||||
"com.affine.workspaceType.joined": "ワークスペースに参加",
|
||||
"com.affine.workspaceType.local": "ローカルワークスペース",
|
||||
"com.affine.workspaceType.offline": "オフラインで利用可能",
|
||||
"Confirm": "確認",
|
||||
"Connector": "コネクター(近日公開)",
|
||||
"Continue with Google": "Googleでログイン",
|
||||
"Convert to ": "変換する",
|
||||
"Copied link to clipboard": "リンクをクリップボードにコピーしました",
|
||||
"Copy": "コピー",
|
||||
"Copy Link": "リンクをコピー",
|
||||
"core": "主要な",
|
||||
"Create": "作成",
|
||||
"Create Or Import": "作成またはインポート",
|
||||
"Create Shared Link Description": "誰とでも簡単に共有できるリンクを作成します",
|
||||
"Create your own workspace": "独自のワークスペースを作成する",
|
||||
"Created": "作成日",
|
||||
"Data sync mode": "データ同期モード",
|
||||
"DB_FILE_ALREADY_LOADED": "データベースファイルはすでにロードされています",
|
||||
"DB_FILE_INVALID": "無効なデータベースファイル",
|
||||
"DB_FILE_PATH_INVALID": "データベースファイルのパスが無効です",
|
||||
"Delete": "削除",
|
||||
"Delete Member?": "メンバーを削除しますか?",
|
||||
"Delete Workspace Label Hint": "このワークスペースを削除すると、すべてのユーザーのコンテンツが永久に削除されます。このワークスペースのコンテンツを復元することはできません",
|
||||
"Delete Workspace placeholder": "確認のため、「Delete」と入力してください",
|
||||
"Disable": "無効",
|
||||
"Disable Public Link": "パブリックリンクを無効にする",
|
||||
"Disable Public Sharing": "パブリック共有を無効にする",
|
||||
"Download all data": "すべてのデータをダウンロードする",
|
||||
"Download core data": "主要なデータのダウンロード",
|
||||
"Download data": "{{CoreOrAll}} データのダウンロード",
|
||||
"Download data Description1": "端末の容量を大きく占有します",
|
||||
"Download data Description2": "端末の容量をあまり占有しません",
|
||||
"Edit": "編集",
|
||||
"emptyAllPages": "このワークスペースに何もありません。新しいページを作成して編集を開始します",
|
||||
"emptyFavorite": "「お気に入りに追加」をクリックすると、ここにページが表示されます",
|
||||
"emptySharedPages": "共有されたページがここに表示されます",
|
||||
"emptyTrash": "「ゴミ箱に移動」をクリックすると、ここにページが表示されます",
|
||||
"Enable": "有効",
|
||||
"Enable AFFiNE Cloud": "AFFiNEクラウドを有効にする",
|
||||
"Enable AFFiNE Cloud Description": "有効にすると、このワークスペース内のデータがAFFiNEクラウド経由でバックアップおよび同期されます",
|
||||
"Enabled success": "有効化に成功",
|
||||
"Export": "エクスポート",
|
||||
"Export AFFiNE backup file": "AFFiNEバックアップファイルのエクスポート",
|
||||
"Export Description": "ワークスペースにあるデータ全体をバックアップ用にエクスポートしたり、エクスポートしたデータを再インポートしたりできます",
|
||||
"Export Shared Pages Description": "ページの静的コピーをダウンロードして、他の人と共有することができます",
|
||||
"Export success": "エクスポートに成功",
|
||||
"Export to HTML": "HTMLにエクスポート",
|
||||
"Export to Markdown": "Markdownにエクスポート",
|
||||
"Export Workspace": "ワークスペースのエクスポート <1>{{workspace}}</1>は近日公開予定です",
|
||||
"Failed to publish workspace": "ワークスペースの公開に失敗しました",
|
||||
"Favorite": "お気に入り",
|
||||
"Favorite pages for easy access": "お気に入りのページへ簡単にアクセス",
|
||||
"Favorited": "お気に入りに追加しました",
|
||||
"FILE_ALREADY_EXISTS": "ファイルが既に存在します",
|
||||
"Find 0 result": "検索結果 0 件",
|
||||
"Find results": "検索結果 {{number}} 件",
|
||||
"Force Sign Out": "強制サインアウト",
|
||||
"Get in touch!": "ご連絡ください!",
|
||||
"Get in touch! Join our communities": "連絡してください! コミュニティに参加しましょう",
|
||||
"Get in touch! Join our communities.": "連絡してください! コミュニティに参加しましょう",
|
||||
"Got it": "了解",
|
||||
"How is AFFiNE Alpha different?": "AFFiNE Alphaはどう違うのですか?",
|
||||
"Import": "インポート",
|
||||
"Invite": "招待",
|
||||
"Invite Members": "メンバーを招待",
|
||||
"Invite placeholder": "メールの検索(Gmailのみサポート)",
|
||||
"is a Cloud Workspace": "はクラウドワークスペースです",
|
||||
"is a Local Workspace": "はローカルワークスペースです",
|
||||
"It takes up little space on your device": "端末の容量をあまり占有しません",
|
||||
"It takes up little space on your device.": "端末の容量をあまり占有しません",
|
||||
"It takes up more space on your device": "端末の容量を大きく占有します",
|
||||
"It takes up more space on your device.": "端末の容量を大きく占有します",
|
||||
"Jump to": "ジャンプ先",
|
||||
"Loading": "読み込み中...",
|
||||
"Local Workspace Description": "すべてのデータは現在のデバイスに保存されます。このワークスペースのAFFiNEクラウドを有効にすると、クラウドとデータを同期しておくことができます",
|
||||
"login success": "ログイン成功",
|
||||
"Member": "メンバー",
|
||||
"Member has been removed": "{{name}}は削除されました",
|
||||
"Members": "メンバー",
|
||||
"mobile device": "モバイル端末で閲覧しているようです",
|
||||
"mobile device description": "モバイルへの対応は現在も進めており、デスクトップ端末でのご利用を推奨しています",
|
||||
"Move folder": "フォルダを移動",
|
||||
"Move folder hint": "新しい保存場所を選択",
|
||||
"Move folder success": "フォルダの移動に成功",
|
||||
"Move page to": "ページの移動...",
|
||||
"Move page to...": "ページの移動...",
|
||||
"Move to": "移動先",
|
||||
"Moved to Trash": "ゴミ箱に移動した",
|
||||
"My Workspaces": "マイワークスペース",
|
||||
"Navigation Path": "ナビゲーションパス",
|
||||
"New Keyword Page": "新しい「{{query}}」ページ",
|
||||
"New Page": "新規ページ",
|
||||
"New Workspace": "新規ワークスペース",
|
||||
"No item": "項目なし",
|
||||
"Non-Gmail": "Gmail以外はサポートされていません",
|
||||
"Not now": "あとで登録する",
|
||||
"Open folder": "フォルダを開く",
|
||||
"Open folder hint": "保存フォルダがどこにあるか確認してください",
|
||||
"Open Workspace Settings": "ワークスペース設定を開く",
|
||||
"Organize pages to build knowledge": "ページを整理して知識を深める",
|
||||
"Owner": "オーナー",
|
||||
"Paper": "用紙",
|
||||
"Pending": "保留中",
|
||||
"Pivots": "ピボット",
|
||||
"Please make sure you are online": "オンラインであることを確認してください",
|
||||
"Publish": "公開",
|
||||
"Publish to web": "Webに公開",
|
||||
"Published Description": "現在のワークスペースはWebに公開されており、誰でもリンクを通じてこのワークスペースの内容を表示できます",
|
||||
"Published to Web": "Webに公開しました",
|
||||
"Publishing": "Webへの公開はAFFiNEクラウドサービスが必要です",
|
||||
"Publishing Description": "Web に公開すると、誰もがリンクを通じてこのワークスペースのコンテンツを表示できるようになります",
|
||||
"Quick search": "クイック検索",
|
||||
"Quick search placeholder": "クイック検索...",
|
||||
"Quick search placeholder2": "{{workspace}} を検索中",
|
||||
"Recent": "最近",
|
||||
"recommendBrowser": "最適な環境でご利用いただくために、<1>Chrome</1>ブラウザを推奨します",
|
||||
"Remove from Pivots": "ピボットの削除",
|
||||
"Remove from workspace": "ワークスペースから削除",
|
||||
"Rename": "名前の変更",
|
||||
"Restart Install Client Update": "再起動してアップデートをインストールする",
|
||||
"Retain cached cloud data": "ローカルにキャッシュされたデータを保持",
|
||||
"Retain local cached data": "ローカルにキャッシュされたデータを保持",
|
||||
"RFP": "ピボットのページは自由に追加・削除することができ、「すべてのページ」からもアクセスできます",
|
||||
"Saved then enable AFFiNE Cloud": "すべての変更はローカルに保存されます。クリックしてAFFiNEクラウドを有効にします。",
|
||||
"Set up an AFFiNE account to sync data": "データを同期するためにAFFiNEアカウントを設定する",
|
||||
"Share Menu Public Workspace Description1": "ワークスペースへ他の人を招待したり、Webに公開することができます",
|
||||
"Share Menu Public Workspace Description2": "現在のワークスペースは、公開ワークスペースとしてWebに公開されています",
|
||||
"Share with link": "リンクを共有",
|
||||
"Shared Pages": "共有ページ",
|
||||
"Shared Pages Description": "ページの公開にはAFFiNEクラウドサービスが必要です",
|
||||
"Shared Pages In Public Workspace Description": "ワークスペース全体はWeb上で公開され、<1>ワークスペース設定</1>で編集することができます",
|
||||
"Shortcuts": "ショートカット",
|
||||
"Sign in": "AFFiNEクラウドにサインイン",
|
||||
"Sign in and Enable": "サインインして有効化",
|
||||
"Sign out": "サインアウト",
|
||||
"Sign out description": "サインアウトすると、同期していないコンテンツは失われます",
|
||||
"Skip": "スキップ",
|
||||
"Stay logged out": "ログアウト状態を維持する",
|
||||
"Sticky": "付箋(近日公開)",
|
||||
"still designed": "(このページはまだ設計中です)",
|
||||
"Stop publishing": "公開をやめる",
|
||||
"Storage Folder": "ストレージフォルダー",
|
||||
"Sync": "同期",
|
||||
"Synced with AFFiNE Cloud": "AFFiNEクラウドと同期しています",
|
||||
"Title": "タイトル",
|
||||
"UNKNOWN_ERROR": "未知のエラー",
|
||||
"Untitled": "無題",
|
||||
"Update Available": "アップデート可能",
|
||||
"Update workspace name success": "ワークスペース名の更新に成功",
|
||||
"Updated": "更新日",
|
||||
"upgradeBrowser": "快適にご利用いただくために、Chromeの最新バージョンへのアップグレードをお願いします",
|
||||
"Upload": "アップロード",
|
||||
"Users": "ユーザー",
|
||||
"View Navigation Path": "ナビゲーションパスを表示",
|
||||
"Wait for Sync": "同期を待つ",
|
||||
"will delete member": "はメンバーを削除します",
|
||||
"Workspace Avatar": "ワークスペースのアバター",
|
||||
"Workspace Icon": "ワークスペースのアイコン",
|
||||
"Workspace Name": "ワークスペース名",
|
||||
"Workspace Not Found": "ワークスペースが見つかりません",
|
||||
"Workspace Owner": "ワークスペースの所有者",
|
||||
"Workspace Settings": "ワークスペースの設定",
|
||||
"Workspace Type": "ワークスペースのタイプ",
|
||||
"You cannot delete the last workspace": "最後のワークスペースを削除することはできません"
|
||||
}
|
||||
273
packages/frontend/i18n/src/resources/ko.json
Normal file
273
packages/frontend/i18n/src/resources/ko.json
Normal file
@@ -0,0 +1,273 @@
|
||||
{
|
||||
"Access level": "접근 권한",
|
||||
"Add a subpage inside": "내부에서 하부 페이지 생성",
|
||||
"Add Workspace": "워크스페이스 추가",
|
||||
"All changes are saved locally": "모든 변경사항이 로컬에 저장 완료",
|
||||
"All data has been stored in the cloud": "모든 데이터가 클라우드에 저장됨",
|
||||
"Back to Quick Search": "빠른 검색으로 돌아가기",
|
||||
"Change avatar hint": "새로운 아바타는 모든 사람에게 공개됩니다.",
|
||||
"Change workspace name hint": "새로운 이름은 모든 사람에게 공개됩니다.",
|
||||
"Check Our Docs": "문서를 확인하세요",
|
||||
"Cloud Workspace Description": "모든 데이터가 AFFiNE 계정 <1>{{email}}</1>으로 동기화 및 저장됨.",
|
||||
"Collaboration": "협업",
|
||||
"Collaboration Description": "다른 사람과 협업하기 위해서 AFFiNE 클라우드 서비스가 필요합니다.",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNE 커뮤니티",
|
||||
"com.affine.aboutAFFiNE.contact.website": "공식 웹사이트",
|
||||
"com.affine.appUpdater.downloading": "다운로드 진행중",
|
||||
"com.affine.appUpdater.installUpdate": "업데이트 하기 위해 재시작",
|
||||
"com.affine.appUpdater.openDownloadPage": "다운로드 페이지 열기",
|
||||
"com.affine.appUpdater.updateAvailable": "업데이트 가능",
|
||||
"com.affine.appUpdater.whatsNew": "새로운 기능 탐색",
|
||||
"com.affine.backButton": "홈으로 돌아가기",
|
||||
"com.affine.brand.affineCloud": "AFFiNE 클라우드",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNE 클라우드는 현재 개선중입니다.",
|
||||
"com.affine.confirmModal.button.cancel": "취소",
|
||||
"com.affine.currentYear": "올해",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "워크스페이스 떠나기",
|
||||
"com.affine.editCollection.button.cancel": "취소",
|
||||
"com.affine.editCollection.button.create": "생성",
|
||||
"com.affine.editCollection.save": "저장",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "취소",
|
||||
"com.affine.favoritePageOperation.add": "즐겨찾기에 추가",
|
||||
"com.affine.favoritePageOperation.remove": "즐겨찾기에서 제거",
|
||||
"com.affine.helpIsland.contactUs": "우리에게 연락하세요",
|
||||
"com.affine.helpIsland.gettingStarted": "시작하기",
|
||||
"com.affine.helpIsland.helpAndFeedback": "도움과 피드백",
|
||||
"com.affine.import_file": "마크다운(Markdown)/노션(Notion) 지원",
|
||||
"com.affine.inviteModal.button.cancel": "취소",
|
||||
"com.affine.keyboardShortcuts.bodyText": "본문",
|
||||
"com.affine.keyboardShortcuts.bold": "굵은 글꼴",
|
||||
"com.affine.keyboardShortcuts.cancel": "취소",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "코드 블록",
|
||||
"com.affine.keyboardShortcuts.divider": "구분자",
|
||||
"com.affine.keyboardShortcuts.heading": "헤딩 {{number}}",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "들여쓰기",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "인라인 코드",
|
||||
"com.affine.keyboardShortcuts.italic": "이탤릭체",
|
||||
"com.affine.keyboardShortcuts.link": "하이퍼링크 (선택된 텍스트)",
|
||||
"com.affine.keyboardShortcuts.newPage": "새로운 페이지",
|
||||
"com.affine.keyboardShortcuts.pen": "펜 (추가 예정)",
|
||||
"com.affine.keyboardShortcuts.redo": "되돌리기",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "들여쓰기 감소",
|
||||
"com.affine.keyboardShortcuts.select": "선택",
|
||||
"com.affine.keyboardShortcuts.shape": "모양",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "취소선",
|
||||
"com.affine.keyboardShortcuts.title": "키보드 단축키",
|
||||
"com.affine.keyboardShortcuts.underline": "밑줄",
|
||||
"com.affine.keyboardShortcuts.undo": "되돌리기",
|
||||
"com.affine.last30Days": "최근 30일",
|
||||
"com.affine.last7Days": "최근 7일",
|
||||
"com.affine.lastMonth": "지난 달",
|
||||
"com.affine.lastWeek": "지난 주",
|
||||
"com.affine.lastYear": "작년",
|
||||
"com.affine.moveToTrash.confirmModal.title": "페이지 삭제",
|
||||
"com.affine.moveToTrash.title": "휴지통으로 이동",
|
||||
"com.affine.nameWorkspace.button.cancel": "취소",
|
||||
"com.affine.nameWorkspace.button.create": "생성",
|
||||
"com.affine.nameWorkspace.placeholder": "워크스페이스 이름 입력",
|
||||
"com.affine.nameWorkspace.title": "워크스페이스 이름을 입력하세요",
|
||||
"com.affine.new_edgeless": "새로운 엣지리스",
|
||||
"com.affine.new_import": "불러오기",
|
||||
"com.affine.notFoundPage.backButton": "홈으로 돌아가기",
|
||||
"com.affine.notFoundPage.title": "404 - 발견되지 않음",
|
||||
"com.affine.openPageOperation.newTab": "새로운 탭에서 열기",
|
||||
"com.affine.pageMode.all": "모든",
|
||||
"com.affine.pageMode.edgeless": "엣지리스",
|
||||
"com.affine.pageMode.page": "페이지",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "취소",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "비활성화",
|
||||
"com.affine.publicLinkDisableModal.title": "공개 링크를 비활성화 할까요?",
|
||||
"com.affine.rootAppSidebar.favorites": "즐겨찾기",
|
||||
"com.affine.rootAppSidebar.others": "다른",
|
||||
"com.affine.setDBLocation.button.customize": "커스터마이즈",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "기본 위치",
|
||||
"com.affine.setDBLocation.title": "데이터베이스 위치 선택",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "기본적으로 {{location}}에 저장됨",
|
||||
"com.affine.setSyncingMode.button.continue": "계속",
|
||||
"com.affine.setSyncingMode.cloud": "AFFiNE 클라우드로 장치간 동기화",
|
||||
"com.affine.setSyncingMode.title.added": "성공적으로 추가됨",
|
||||
"com.affine.setSyncingMode.title.created": "성공적으로 생성됨",
|
||||
"com.affine.settingSidebar.settings.general": "일반",
|
||||
"com.affine.settingSidebar.title": "설정",
|
||||
"com.affine.shortcutsTitle.edgeless": "엣지리스",
|
||||
"com.affine.shortcutsTitle.general": "일반",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "마크다운 문법",
|
||||
"com.affine.shortcutsTitle.page": "페이지",
|
||||
"com.affine.sidebarSwitch.collapse": "사이드바 닫기",
|
||||
"com.affine.sidebarSwitch.expand": "사이드바 열기",
|
||||
"com.affine.themeSettings.dark": "다크",
|
||||
"com.affine.themeSettings.light": "밝은",
|
||||
"com.affine.themeSettings.system": "시스템",
|
||||
"com.affine.toastMessage.addedFavorites": "즐겨찾기에 추가됨",
|
||||
"com.affine.toastMessage.edgelessMode": "엣지리스 모드",
|
||||
"com.affine.toastMessage.movedTrash": "휴지통으로 이동됨",
|
||||
"com.affine.toastMessage.pageMode": "페이지 모드",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "영원히 삭제됨",
|
||||
"com.affine.toastMessage.removedFavorites": "즐겨찾기에서 제거됨",
|
||||
"com.affine.toastMessage.restored": "{{title}} 복구됨",
|
||||
"com.affine.toastMessage.successfullyDeleted": "성공적으로 삭제됨",
|
||||
"com.affine.today": "오늘",
|
||||
"com.affine.trashOperation.delete": "삭제",
|
||||
"com.affine.trashOperation.delete.title": "영원히 삭제",
|
||||
"com.affine.trashOperation.deletePermanently": "영원히 삭제",
|
||||
"com.affine.trashOperation.restoreIt": "복구하기",
|
||||
"com.affine.workspace.cannot-delete": "마지막 워크스페이스를 삭제할 수 없습니다",
|
||||
"com.affine.workspaceDelete.button.cancel": "취소",
|
||||
"com.affine.workspaceDelete.button.delete": "삭제",
|
||||
"com.affine.workspaceDelete.description": "<1>{{workspace}}</1> 를 삭제하면 되돌릴 수 없으니 주의해주세요. 모든 항목을 잃게 됩니다.",
|
||||
"com.affine.workspaceDelete.description2": "<1>{{workspace}}</1>를 삭제하면 로컬과 클라우드 데이터 모두 삭제되며, 되돌릴 수 없으므로, 주의해주세요 ",
|
||||
"com.affine.workspaceDelete.placeholder": "워크스페이스 이름을 입력후 확인",
|
||||
"com.affine.workspaceDelete.title": "워크스페이스 삭제",
|
||||
"com.affine.workspaceLeave.button.cancel": "취소",
|
||||
"com.affine.workspaceLeave.button.leave": "떠나기",
|
||||
"com.affine.workspaceLeave.description": "워스크페이스를 떠나게 되면 데이터에 더이상 접근할 수 없습니다.",
|
||||
"com.affine.workspaceSubPath.all": "모든 페이지",
|
||||
"com.affine.workspaceSubPath.trash": "휴지통",
|
||||
"com.affine.workspaceType.cloud": "클라우드 워크스페이스",
|
||||
"com.affine.workspaceType.joined": "참가한 워크스페이스",
|
||||
"com.affine.workspaceType.local": "로컬 워크스페이스",
|
||||
"com.affine.workspaceType.offline": "오프라인 작업 가능",
|
||||
"com.affine.write_with_a_blank_page": "새로운 페이지로 작성",
|
||||
"com.affine.yesterday": "어제",
|
||||
"Confirm": "동의",
|
||||
"Continue with Google": "구글로 계속하기",
|
||||
"Convert to ": "전환",
|
||||
"Copied link to clipboard": "링크가 클립보드로 복사됨",
|
||||
"Copy Link": "링크 복사",
|
||||
"core": "코어",
|
||||
"Create": "생성",
|
||||
"Create Or Import": "생성하거나 불러오기",
|
||||
"Create Shared Link Description": "다른 사람과 공유할 수 있는 링크 생성하기",
|
||||
"Create your own workspace": "새로운 워크스페이스 생성",
|
||||
"Created": "생성됨",
|
||||
"Created with": "와 함께 생성됨",
|
||||
"DB_FILE_INVALID": "유요하지 않은 데이터베이스 파일",
|
||||
"DB_FILE_PATH_INVALID": "데이터베이스 파일 경로가 유효하지 않음",
|
||||
"Delete": "삭제",
|
||||
"Delete Member?": "멤버를 삭제할까요?",
|
||||
"Delete Workspace Label Hint": "워크스페이스를 삭제하게 되면, 모든 사용자의 데이터가 영구적으로 삭제됩니다. 워크스페이스의 데이터는 아무도 복구할 수 없습니다.",
|
||||
"Delete Workspace placeholder": "진행하기 위해서 \"Delete\"를 입력",
|
||||
"Disable": "비활성화",
|
||||
"Disable Public Link": "공개 링크 비활성화",
|
||||
"Disable Public Sharing": "공유 비활성화",
|
||||
"Download all data": "모든 데이터 다운로드",
|
||||
"Download core data": "코어 데이터 다운로드",
|
||||
"Download data": "{{CoreOrAll}} 데이터 다운로드",
|
||||
"Edit": "수정",
|
||||
"emptyAllPages": "이 워크스페이스는 비어있습니다. 새로운 페이지를 생성하여 이어가세요.",
|
||||
"emptySharedPages": "공유된 페이지는 여기서 확인할 수 있습니다.",
|
||||
"Enable": "활성화",
|
||||
"Enable AFFiNE Cloud": "AFFiNE 클라우드 활성화",
|
||||
"Enable AFFiNE Cloud Description": "만약 활성화 한다면, 워크스페이스 데이터가 AFFiNE 클라우드에 백업 및 싱크 됩니다.",
|
||||
"Enabled success": "활성화 성공",
|
||||
"Export": "내보내기",
|
||||
"Export AFFiNE backup file": "AFFiNE 백업 파일 내보내기",
|
||||
"Export Description": "워크스페이스의 모든 데이터 백업을 내보내기 할 수 있으며, 내보내기 한 데이터는 다시 불러올 수 있습니다.",
|
||||
"Export Shared Pages Description": "다른 사람과 공유하기 위한 페이지의 정적 복사본 다운로드",
|
||||
"Export success": "내보내기 ",
|
||||
"Export to HTML": "HTML로 내보내기",
|
||||
"Export to Markdown": "Markdown으로 내보내기",
|
||||
"Export to PDF": "PDF로 내보내기",
|
||||
"Export to PNG": "PNG로 내보내기",
|
||||
"Export Workspace": "워크스페이스 <1>{{workspace}}</1> 내보내기는 추가될 예정입니다.",
|
||||
"Failed to publish workspace": "워크스페이스 공개 실패",
|
||||
"Favorite": "즐겨찾기",
|
||||
"Favorite pages for easy access": "쉬운 접근을 위해 즐겨찾기에 추가",
|
||||
"Favorited": "즐겨찾기 됨",
|
||||
"FILE_ALREADY_EXISTS": "파일이 이미 존재함",
|
||||
"Find 0 result": "0개 결과 발견",
|
||||
"Find results": "{{number}}개 결과 발견",
|
||||
"Force Sign Out": "강제 로그아웃",
|
||||
"Get in touch!": "연락하세요!",
|
||||
"Get in touch! Join our communities": "연락하세요! 우리의 커뮤니티에 가입하세요.",
|
||||
"Get in touch! Join our communities.": "연락하세요! 우리의 커뮤니티에 가입하세요.",
|
||||
"Got it": "확인",
|
||||
"Import": "불러오기",
|
||||
"Invite": "초대",
|
||||
"Invite Members": "멤버 초대",
|
||||
"Invite placeholder": "메일 검색 (Gmail만 지원)",
|
||||
"is a Cloud Workspace": "는 클라우드 워크스페이스 입니다.",
|
||||
"is a Local Workspace": "는 로컬 워크스페이스 입니다.",
|
||||
"It takes up little space on your device": "당신의 장치의 작은 저장공간을 사용합니다.",
|
||||
"It takes up little space on your device.": "당신의 장치의 작은 저장공간을 사용합니다.",
|
||||
"It takes up more space on your device": "당신의 장치의 많은 저장공간을 사용합니다.",
|
||||
"It takes up more space on your device.": "당신의 장치의 많은 저장공간을 사용합니다.",
|
||||
"Jump to": "이동",
|
||||
"Loading": "불러오는 중...",
|
||||
"login success": "로그인 성공",
|
||||
"Member": "멤버",
|
||||
"Member has been removed": "{{name}}이 삭제됨",
|
||||
"Members": "멤버들",
|
||||
"mobile device": "모바일 기기에서 탐색 중인 것으로 보임.",
|
||||
"Move folder": "폴더 이동",
|
||||
"Move folder hint": "새로운 저장소 위치 선택",
|
||||
"Move folder success": "폴더 이동 성공",
|
||||
"Move page to": "페이지를 이동...",
|
||||
"Move page to...": "페이지를 이동...",
|
||||
"Move to": "이동",
|
||||
"Moved to Trash": "휴지통으로 이동됨",
|
||||
"My Workspaces": "내 워크스페이스",
|
||||
"New Keyword Page": "새로운 '{{query}}' 페이지",
|
||||
"New Page": "새로운 페이지",
|
||||
"New Workspace": "새로운 워크스페이스",
|
||||
"No item": "새로운 아이템",
|
||||
"Non-Gmail": "Gmail 외에는 지원되지 않습니다",
|
||||
"Not now": "나중에",
|
||||
"Open folder": "폴더 열기",
|
||||
"Open folder hint": "저장소의 위치 확인",
|
||||
"Open Workspace Settings": "워크스페이스 설정 열기",
|
||||
"Organize pages to build knowledge": "페이지를 구성하여 지식을 쌓으세요",
|
||||
"Owner": "소유자",
|
||||
"Pivots": "피봇",
|
||||
"Please make sure you are online": "온라인 인것을 확인하세요",
|
||||
"Publish": "공개",
|
||||
"Publish to web": "웹에서 공개",
|
||||
"Published Description": "현재 워크스페이스가 웹을 통해 공개되었습니다, 링크를 가진 누구든지 워크스페이스의 콘텐츠를 볼 수 있습니다.",
|
||||
"Published to Web": "웹에서 공개됨",
|
||||
"Publishing": "웹으로 공개하기 위해서는 AFFiNE 클라우스 서비스가 필요함.",
|
||||
"Publishing Description": "웹을 통해 공유하게 되면, 링크를 가진 모든 사람이 콘텐츠를 볼 수 있습니다.",
|
||||
"Quick search": "빠른 검색",
|
||||
"Quick search placeholder": "빠른 검색...",
|
||||
"Quick search placeholder2": "{{workspace}}에서 검색",
|
||||
"Recent": "최근",
|
||||
"Remove from workspace": "워크스페이스에서 삭제",
|
||||
"Rename": "이름 변경",
|
||||
"Restart Install Client Update": "업데이트 하기 위해 재시작",
|
||||
"Saved then enable AFFiNE Cloud": "모든 변경사항이 로컬에 저장되었습니다, 클릭하여 AFFiNE 클라우드를 활성화 하세요.",
|
||||
"Set up an AFFiNE account to sync data": "AFFiNE 계정을 지정하여 데이터 동기화",
|
||||
"Share Menu Public Workspace Description1": "다른사람을 워크스페이스로 초대하거나 웹을 통하여 공유.",
|
||||
"Share Menu Public Workspace Description2": "현재 워크스페이스는 웹을 통해 공유된 공유 워크스페이스입니다.",
|
||||
"Share with link": "링크로 공유",
|
||||
"Shared Pages": "공유된 페이지",
|
||||
"Shared Pages Description": "페이지를 공유하기 위해서 AFFiNE 클라우드 서비스가 필요합니다.",
|
||||
"Shortcuts": "단축키",
|
||||
"Sign in": "AFFiNE 클라우드 로그인",
|
||||
"Sign in and Enable": "로그인하고 활성화",
|
||||
"Sign out": "로그아웃",
|
||||
"Skip": "넘기기",
|
||||
"Stay logged out": "로그아웃 상태 유지",
|
||||
"Sticky": "스티키 노트 (추가 예정)",
|
||||
"still designed": "(현재 페이지는 지속적으로 수정되고 있습니다.)",
|
||||
"Stop publishing": "공유 중지",
|
||||
"Storage Folder": "저장 폴더",
|
||||
"Sync": "싱크",
|
||||
"Synced with AFFiNE Cloud": "AFFiNE 클라우드로 동기화됨",
|
||||
"Title": "제목",
|
||||
"UNKNOWN_ERROR": "알수 없는 에러",
|
||||
"Untitled": "제목 없음",
|
||||
"Update Available": "업데이트 가능",
|
||||
"Updated": "업데이트됨",
|
||||
"upgradeBrowser": "최상의 경험을 위해 크롬을 최신 버전으로 업테이트 해주세요.",
|
||||
"Upload": "업로드",
|
||||
"Users": "유저들",
|
||||
"Wait for Sync": "싱크 대기중",
|
||||
"will delete member": "멤버를 삭제합니다",
|
||||
"Workspace Avatar": "워크스페이스 아바타",
|
||||
"Workspace Icon": "워크스페이스 아이콘",
|
||||
"Workspace Name": "워크스페이스 이름",
|
||||
"Workspace Not Found": "워크스페이스를 찾을 수 없음",
|
||||
"Workspace Owner": "워크스페이스 주인",
|
||||
"Workspace Settings": "워크스페이스 설정",
|
||||
"Workspace Type": "워크스페이스 종류",
|
||||
"You cannot delete the last workspace": "모든"
|
||||
}
|
||||
291
packages/frontend/i18n/src/resources/ru.json
Normal file
291
packages/frontend/i18n/src/resources/ru.json
Normal file
@@ -0,0 +1,291 @@
|
||||
{
|
||||
"Access level": "Уровень доступа",
|
||||
"Add Workspace": "Добавить пространство",
|
||||
"All changes are saved locally": "Все изменения сохраняются локально",
|
||||
"All data has been stored in the cloud": "Все данные хранятся в облаке.",
|
||||
"Back to Quick Search": "Назад к Быстрому поиску",
|
||||
"Change avatar hint": "Новый аватар будет отображаться для всех пользователей.",
|
||||
"Change workspace name hint": "Новое название будет отображаться для всех пользователей.",
|
||||
"Check Our Docs": "Проверьте нашу документацию",
|
||||
"Cloud Workspace Description": "Все данные будут синхронизированы и сохранены в AFFiNE аккаунт <1>{{email}}</1>",
|
||||
"Collaboration": "Совместная работа",
|
||||
"Collaboration Description": "Для совместной работы с другими участниками требуется сервис AFFiNE Cloud.",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "Проверять обновления автоматически",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.description": "Загружать обновления автоматически (на данное устройство).",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.title": "Загружать обновления автоматически",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "Доступна новая версия",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "Проверить обновления",
|
||||
"com.affine.aboutAFFiNE.community.title": "Сообщества",
|
||||
"com.affine.aboutAFFiNE.contact.community": "Сообщество AFFiNE",
|
||||
"com.affine.aboutAFFiNE.contact.title": "Связаться с нами",
|
||||
"com.affine.aboutAFFiNE.contact.website": "Официальный Сайт",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "Конфиденциальность",
|
||||
"com.affine.aboutAFFiNE.legal.title": "Юридическая информация",
|
||||
"com.affine.aboutAFFiNE.subtitle": "Информация об AFFiNE",
|
||||
"com.affine.aboutAFFiNE.title": "Об AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "Версия приложения",
|
||||
"com.affine.appearanceSettings.clientBorder.description": "Настроить внешний вид клиента.",
|
||||
"com.affine.appearanceSettings.color.description": "Выберите цветовую схему",
|
||||
"com.affine.appearanceSettings.color.title": "Цветовая схема",
|
||||
"com.affine.appearanceSettings.date.title": "Дата",
|
||||
"com.affine.appearanceSettings.dateFormat.description": "Настроить формат даты.",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "Формат даты",
|
||||
"com.affine.appearanceSettings.font.description": "Выберите стиль шрифта",
|
||||
"com.affine.appearanceSettings.font.title": "Стиль шрифта",
|
||||
"com.affine.appearanceSettings.language.title": "Язык интерфейса",
|
||||
"com.affine.appearanceSettings.startWeek.description": "По умолчанию неделя начинается с воскресенья.",
|
||||
"com.affine.appearanceSettings.title": "Настройки оформления",
|
||||
"com.affine.appUpdater.downloading": "Загрузка",
|
||||
"com.affine.appUpdater.installUpdate": "Перезапустить для установки обновления",
|
||||
"com.affine.appUpdater.updateAvailable": "Доступно обновление",
|
||||
"com.affine.backButton": "Вернуться на Главную",
|
||||
"com.affine.brand.affineCloud": "AFFiNE Cloud",
|
||||
"com.affine.confirmModal.button.cancel": "Отмена",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "Выйти из рабочего пространства",
|
||||
"com.affine.editCollection.button.cancel": "Отмена",
|
||||
"com.affine.editCollection.button.create": "Создать",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "Отмена",
|
||||
"com.affine.export.success.title": "Экспорт прошел успешно",
|
||||
"com.affine.favoritePageOperation.add": "Добавить в избранное",
|
||||
"com.affine.favoritePageOperation.remove": "Удалить из Избранного",
|
||||
"com.affine.filter": "Фильтр",
|
||||
"com.affine.helpIsland.contactUs": "Связаться с нами",
|
||||
"com.affine.helpIsland.helpAndFeedback": "Помощь и обратная связь",
|
||||
"com.affine.inviteModal.button.cancel": "Отмена",
|
||||
"com.affine.keyboardShortcuts.bodyText": "Основной текст",
|
||||
"com.affine.keyboardShortcuts.bold": "Жирный",
|
||||
"com.affine.keyboardShortcuts.cancel": "Отмена",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "Блок кода",
|
||||
"com.affine.keyboardShortcuts.divider": "Разделитель",
|
||||
"com.affine.keyboardShortcuts.expandOrCollapseSidebar": "Развернуть/Свернуть Боковую панель",
|
||||
"com.affine.keyboardShortcuts.group": "Группировать",
|
||||
"com.affine.keyboardShortcuts.hand": "Рука",
|
||||
"com.affine.keyboardShortcuts.heading": "Заголовок {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "Изображение",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "Увеличить отступ",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "Встроенный код",
|
||||
"com.affine.keyboardShortcuts.italic": "Курсив",
|
||||
"com.affine.keyboardShortcuts.link": "Гиперссылка (с выделенным текстом)",
|
||||
"com.affine.keyboardShortcuts.moveDown": "Переместить вниз",
|
||||
"com.affine.keyboardShortcuts.moveUp": "Переместить вверх",
|
||||
"com.affine.keyboardShortcuts.newPage": "Новая страница",
|
||||
"com.affine.keyboardShortcuts.pen": "Ручка (скоро)",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "Быстрый поиск",
|
||||
"com.affine.keyboardShortcuts.redo": "Повторно выполнить",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "Уменьшить отступ",
|
||||
"com.affine.keyboardShortcuts.select": "Выбор",
|
||||
"com.affine.keyboardShortcuts.shape": "Фигура",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "Перечеркнутый",
|
||||
"com.affine.keyboardShortcuts.subtitle": "Быстрая проверка горячих клавиш",
|
||||
"com.affine.keyboardShortcuts.text": "Текст (скоро)",
|
||||
"com.affine.keyboardShortcuts.title": "Горячие Клавиши",
|
||||
"com.affine.keyboardShortcuts.underline": "Подчеркнутый",
|
||||
"com.affine.keyboardShortcuts.undo": "Отменить",
|
||||
"com.affine.last30Days": "Последние 30 дней",
|
||||
"com.affine.last7Days": "Последние 7 дней",
|
||||
"com.affine.lastMonth": "Последний месяц",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}} будет перемещен в Корзину",
|
||||
"com.affine.moveToTrash.confirmModal.title": "Удалить страницу?",
|
||||
"com.affine.moveToTrash.title": "Переместить в корзину",
|
||||
"com.affine.nameWorkspace.button.cancel": "Отмена",
|
||||
"com.affine.nameWorkspace.button.create": "Создать",
|
||||
"com.affine.nameWorkspace.description": "Рабочее пространство - это ваше виртуальное пространство для фиксации, создания и планирования в одиночку или в команде. ",
|
||||
"com.affine.nameWorkspace.placeholder": "Задайте имя рабочего пространства",
|
||||
"com.affine.notFoundPage.backButton": "Вернуться на Главную",
|
||||
"com.affine.notFoundPage.title": "404 - Страница не найдена",
|
||||
"com.affine.openPageOperation.newTab": "Открыть в новой вкладке",
|
||||
"com.affine.pageMode.all": "все",
|
||||
"com.affine.pageMode.edgeless": "Без полей",
|
||||
"com.affine.pageMode.page": "Страница",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "Отмена",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "Отключить",
|
||||
"com.affine.publicLinkDisableModal.description": "Отключение этой публичной ссылки запретит доступ к этой странице всем, у кого есть эта ссылка.",
|
||||
"com.affine.publicLinkDisableModal.title": "Отключить публичную ссылку ?",
|
||||
"com.affine.rootAppSidebar.collections": "Коллекции",
|
||||
"com.affine.rootAppSidebar.favorites": "Избранное",
|
||||
"com.affine.setDBLocation.button.customize": "Настроить",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "Расположение по умолчанию",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "По умолчанию будет сохранена в {{location}}.",
|
||||
"com.affine.setSyncingMode.button.continue": "Продолжить",
|
||||
"com.affine.setSyncingMode.title.added": "Успешно добавлено",
|
||||
"com.affine.setSyncingMode.title.created": "Успешно создано",
|
||||
"com.affine.settings.appearance": "Внешний вид",
|
||||
"com.affine.settings.remove-workspace": "Удалить рабочее пространство",
|
||||
"com.affine.settings.workspace.storage.tip": "Щелкните, чтобы переместить место хранения.",
|
||||
"com.affine.settingSidebar.settings.general": "Общие",
|
||||
"com.affine.settingSidebar.title": "Настройки",
|
||||
"com.affine.shortcutsTitle.edgeless": "Без полей",
|
||||
"com.affine.shortcutsTitle.general": "Общие",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown Синтаксис",
|
||||
"com.affine.shortcutsTitle.page": "Страница",
|
||||
"com.affine.sidebarSwitch.collapse": "Свернуть боковую панель",
|
||||
"com.affine.sidebarSwitch.expand": "Развернуть боковую панель",
|
||||
"com.affine.themeSettings.dark": "Темная",
|
||||
"com.affine.themeSettings.light": "Светлая",
|
||||
"com.affine.toastMessage.addedFavorites": "Добавлено в Избранное",
|
||||
"com.affine.toastMessage.movedTrash": "Перемещено в корзину",
|
||||
"com.affine.toastMessage.pageMode": "Режим страницы",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "Удалено навсегда",
|
||||
"com.affine.toastMessage.removedFavorites": "Удалено из Избранного",
|
||||
"com.affine.toastMessage.restored": "{{title}} восстановлен",
|
||||
"com.affine.today": "Сегодня",
|
||||
"com.affine.trashOperation.delete": "Удалить",
|
||||
"com.affine.trashOperation.delete.description": "После удаления вы не сможете отменить это действие. Уверены?",
|
||||
"com.affine.trashOperation.delete.title": "Удалить навсегда",
|
||||
"com.affine.trashOperation.deletePermanently": "Удалить навсегда",
|
||||
"com.affine.trashOperation.restoreIt": "Восстановить",
|
||||
"com.affine.workspaceDelete.button.cancel": "Отмена",
|
||||
"com.affine.workspaceDelete.button.delete": "Удалить",
|
||||
"com.affine.workspaceDelete.description": "Удаление <1>{{workspace}}</1> нельзя отменить, пожалуйста, действуйте с осторожностью. Все содержимое будет потеряно.",
|
||||
"com.affine.workspaceDelete.description2": "Удаление <1>{{workspace}}</1> приведет к удалению как локальных, так и облачных данных, эта операция не может быть отменена, пожалуйста действуйте с осторожностью.",
|
||||
"com.affine.workspaceDelete.placeholder": "Пожалуйста, введите имя рабочего пространства для подтверждения",
|
||||
"com.affine.workspaceDelete.title": "Удалить рабочее пространство",
|
||||
"com.affine.workspaceLeave.button.cancel": "Отмена",
|
||||
"com.affine.workspaceLeave.button.leave": "Выйти",
|
||||
"com.affine.workspaceLeave.description": "После выхода вы больше не сможете получить доступ к содержимому этого рабочего пространства.",
|
||||
"com.affine.workspaceSubPath.all": "Все страницы",
|
||||
"com.affine.workspaceSubPath.trash": "Корзина",
|
||||
"com.affine.workspaceType.cloud": "Облачное рабочее пространство",
|
||||
"com.affine.workspaceType.joined": "Присоединенное рабочее пространство",
|
||||
"com.affine.workspaceType.local": "Локальное рабочее пространство",
|
||||
"com.affine.workspaceType.offline": "Доступно оффлайн",
|
||||
"com.affine.yesterday": "Вчера",
|
||||
"Confirm": "Подтвердить",
|
||||
"Connector": "Коннектор (скоро)",
|
||||
"Continue with Google": "Войти через Google",
|
||||
"Convert to ": "Конвертировать в режим",
|
||||
"Copied link to clipboard": "Ссылка скопирована в буфер обмена",
|
||||
"Copy": "Копировать",
|
||||
"Copy Link": "Копировать ссылку",
|
||||
"core": "основных",
|
||||
"Create": "Создать",
|
||||
"Create Or Import": "Создать или Импортировать",
|
||||
"Create Shared Link Description": "Создайте ссылку, которой можно легко поделиться с кем угодно.",
|
||||
"Created": "Создано",
|
||||
"Data sync mode": "Режим синхронизации данных",
|
||||
"DB_FILE_INVALID": "Неверный файл базы данных",
|
||||
"DB_FILE_MIGRATION_FAILED": "Не удалось выполнить перенос файлов базы данных",
|
||||
"Delete": "Удалить",
|
||||
"Delete Member?": "Удалить участника?",
|
||||
"Delete Workspace Label Hint": "После удаления этого рабочего пространства вы навсегда удалите все его содержимое для всех. Никто не сможет восстановить содержимое этого рабочего пространства.",
|
||||
"Delete Workspace placeholder": "Пожалуйста, введите \"Delete\" для подтверждения",
|
||||
"Disable": "Отключить",
|
||||
"Disable Public Link": "Отключить публичную ссылку",
|
||||
"Disable Public Sharing": "Отключить общий доступ",
|
||||
"Download all data": "Скачать все данные",
|
||||
"Download core data": "Скачать основные данные",
|
||||
"Download data": "Скачать {{CoreOrAll}} данные",
|
||||
"Download data Description1": "Это занимает больше места на вашем устройстве.",
|
||||
"Download data Description2": "Это занимает мало места на вашем устройстве.",
|
||||
"Edit": "Редактировать",
|
||||
"emptyAllPages": "Это рабочее пространство пусто. Создайте новую страницу, чтобы начать редактирование.",
|
||||
"emptyAllPagesClient": "Нажмите на <1>$t(New Page)</1> или <3>{{shortcut}}</3>, чтобы создать свою первую страницу.",
|
||||
"emptyFavorite": "Нажмите «Добавить в избранное», и страница появится здесь.",
|
||||
"emptyTrash": "Нажмите «Добавить в корзину», и страница появится здесь.",
|
||||
"Enable": "Включить",
|
||||
"Enable AFFiNE Cloud": "Включить AFFiNE Cloud",
|
||||
"Enable AFFiNE Cloud Description": "Если этот параметр включен, данные в этом рабочем пространстве будут скопированы и синхронизированы с помощью AFFiNE Cloud.",
|
||||
"Enable cloud hint": "Данные функции работают на базе AFFiNE Cloud. Все данные хранятся на данном устройстве. Для синхронизации данных с облаком вы можете включить AFFiNE Cloud для этого рабочего пространства.",
|
||||
"Enabled success": "Успешно",
|
||||
"Export": "Экспорт",
|
||||
"Export AFFiNE backup file": "Экспорт файла резервной копии AFFiNE",
|
||||
"Export Description": "Вы можете экспортировать все данные рабочего пространства, потом эти данные можно повторно импортировать.",
|
||||
"Export success": "Экспорт прошел успешно",
|
||||
"Export to HTML": "Экспортировать в HTML",
|
||||
"Export to Markdown": "Экспортировать в Markdown",
|
||||
"Export to PDF": "Экспортировать в PDF",
|
||||
"Export to PNG": "Экспортировать в PNG",
|
||||
"Export Workspace": "Экспорт рабочего пространства <1>{{workspace}}</1> скоро будет доступен",
|
||||
"Failed to publish workspace": "Не удалось опубликовать рабочее пространство",
|
||||
"Favorite": "В Избранное",
|
||||
"Favorite pages for easy access": "Избранные страницы для быстрого доступа",
|
||||
"Favorited": "В Избранном",
|
||||
"FILE_ALREADY_EXISTS": "Файл уже существует",
|
||||
"Find 0 result": "Найдено 0 результатов",
|
||||
"Find results": "Найдено {{number}} результатов",
|
||||
"Force Sign Out": "Принудительный выход",
|
||||
"Get in touch!": "Связаться!",
|
||||
"Get in touch! Join our communities": "Свяжитесь с нами! Присоединяйтесь к нашим сообществам.",
|
||||
"Get in touch! Join our communities.": "Свяжитесь с нами! Присоединяйтесь к нашим сообществам.",
|
||||
"Got it": "Понятно",
|
||||
"How is AFFiNE Alpha different?": "Чем отличается AFFiNE Alpha?",
|
||||
"Import": "Импортировать",
|
||||
"Info": "Информация",
|
||||
"Invite": "Пригласить",
|
||||
"Invite Members": "Пригласить участников",
|
||||
"Invite placeholder": "Поиск почты (поддерживается только Gmail)",
|
||||
"is a Cloud Workspace": "это облачное рабочее пространство.",
|
||||
"is a Local Workspace": "это локальное рабочее пространство",
|
||||
"It takes up little space on your device": "Занимает мало места на вашем устройстве.",
|
||||
"It takes up little space on your device.": "Занимает мало места на вашем устройстве.",
|
||||
"It takes up more space on your device": "Занимает много места на вашем устройстве.",
|
||||
"It takes up more space on your device.": "Занимает много места на вашем устройстве.",
|
||||
"Jump to": "Перейти к",
|
||||
"Loading": "Загрузка...",
|
||||
"Local Workspace Description": "Все данные хранятся на текущем устройстве. Для синхронизации данных с облаком вы можете включить AFFiNE Cloud для этого рабочего пространства.",
|
||||
"login success": "Успешный вход в систему",
|
||||
"Member": "Участник",
|
||||
"Member has been removed": "{{name}} был удален",
|
||||
"Members": "Участники",
|
||||
"Members hint": "Здесь можно управлять участниками, приглашать новых участников по электронной почте.",
|
||||
"mobile device": "Похоже, что вы просматриваете страницу на мобильном устройстве.",
|
||||
"mobile device description": "Мы все еще работаем над поддержкой мобильных устройств и рекомендуем использовать настольное устройство.",
|
||||
"Move folder hint": "Выберите новое место хранения.",
|
||||
"Move folder success": "Перемещение папки успешно",
|
||||
"Move page to": "Переместить страницу в...",
|
||||
"Move page to...": "Переместить страницу в...",
|
||||
"Moved to Trash": "Перемещено в корзину",
|
||||
"My Workspaces": "Мои рабочие пространства",
|
||||
"New Keyword Page": "Новая '{{query}}' страница",
|
||||
"New Page": "Новая страница",
|
||||
"New Workspace": "Новое рабочее пространство",
|
||||
"No item": "Нет элементов",
|
||||
"Non-Gmail": "Поддерживается только Gmail",
|
||||
"Not now": "Не сейчас",
|
||||
"Open folder": "Открыть папку",
|
||||
"Owner": "Владелец",
|
||||
"Paper": "Лист",
|
||||
"Pending": "В ожидании",
|
||||
"Please make sure you are online": "Пожалуйста, убедитесь, что вы онлайн",
|
||||
"Publish": "Публикация",
|
||||
"Publish to web": "Опубликовать в Интернете",
|
||||
"Published Description": "Текущее рабочее пространство было опубликовано в Интернете. Любой может просматривать содержимое по ссылке. ",
|
||||
"Published to Web": "Опубликовано в Интернете",
|
||||
"Publishing": "Для публикации в интернете требуется сервис AFFiNE Cloud",
|
||||
"Publishing Description": "После публикации в Интернете любой сможет просматривать содержимое этого рабочего пространства по ссылке.",
|
||||
"Quick search": "Быстрый поиск",
|
||||
"Quick search placeholder": "Быстрый поиск...",
|
||||
"Quick search placeholder2": "Поиск в {{workspace}}",
|
||||
"recommendBrowser": "Для оптимальной работы мы рекомендуем использовать браузер <1>Chrome</1>.",
|
||||
"Remove from workspace": "Удалить из рабочего пространства",
|
||||
"Retain cached cloud data": "Сохраняйте кэшированные облачные данные",
|
||||
"Retain local cached data": "Сохранять локальные кэшированные данные",
|
||||
"Saved then enable AFFiNE Cloud": "Все изменения сохраняются локально, нажмите чтобы включить AFFiNE Cloud.",
|
||||
"Set up an AFFiNE account to sync data": "Настройте учетную запись AFFiNE для синхронизации данных",
|
||||
"Share with link": "Поделиться ссылкой",
|
||||
"Shortcuts": "Ярлыки",
|
||||
"Sign in": "Войти в AFFiNE Cloud",
|
||||
"Sign in and Enable": "Войти и Включить",
|
||||
"Sign out": "Выйти из AFFiNE Cloud",
|
||||
"Sign out description": "Выход приведет к потере несинхронизированного контента.",
|
||||
"Skip": "Пропустить",
|
||||
"Stay logged out": "Не выходить из системы",
|
||||
"Sticky": "Стикер (скоро)",
|
||||
"still designed": "(Эта страница все еще находится в разработке.)",
|
||||
"Stop publishing": "Остановить публикацию",
|
||||
"Sync": "Синхронизация",
|
||||
"Title": "Название",
|
||||
"Untitled": "Без названия",
|
||||
"Updated": "Обновлено",
|
||||
"upgradeBrowser": "Пожалуйста, обновите Chrome до последней версии для лучшего взаимодействия.",
|
||||
"Upload": "Загрузить",
|
||||
"Users": "Пользователи",
|
||||
"Wait for Sync": "Дождитесь синхронизации",
|
||||
"will delete member": "удалит участника",
|
||||
"Workspace Avatar": "Аватар рабочего пространства",
|
||||
"Workspace Icon": "Иконка рабочего пространства",
|
||||
"Workspace Name": "Имя рабочего пространства",
|
||||
"Workspace Owner": "Владелец рабочего пространства",
|
||||
"Workspace Settings": "Настройки рабочего пространства",
|
||||
"Workspace Type": "Тип рабочего пространства"
|
||||
}
|
||||
420
packages/frontend/i18n/src/resources/zh-Hans.json
Normal file
420
packages/frontend/i18n/src/resources/zh-Hans.json
Normal file
@@ -0,0 +1,420 @@
|
||||
{
|
||||
"Access level": "访问权限",
|
||||
"Add a subpage inside": "添加一个子页面",
|
||||
"Add Workspace": "导入工作区",
|
||||
"Add Workspace Hint": "请选择已有的数据库文件",
|
||||
"All changes are saved locally": "所有改动已保存到本地",
|
||||
"All data has been stored in the cloud": "所有数据已被保存在云端。",
|
||||
"Back to Quick Search": "返回快速搜索",
|
||||
"Change avatar hint": "新的头像将对所有人显示。",
|
||||
"Change workspace name hint": "新的名称将对所有人显示。",
|
||||
"Check Our Docs": "查看我们的文档",
|
||||
"Cloud Workspace Description": "所有数据将被同步并保存在 AFFiNE 账户(<1>{{email}}</1>)中",
|
||||
"Collaboration": "协作",
|
||||
"Collaboration Description": "与其他成员协作需要 AFFiNE Cloud 服务支持。",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.description": "定期自动检查更新。",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "自动检查更新",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.description": "自动下载更新(到此设备)。",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.title": "自动下载更新",
|
||||
"com.affine.aboutAFFiNE.changelog.description": "查看 AFFiNE 更新日志。",
|
||||
"com.affine.aboutAFFiNE.changelog.title": "发现新动态",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "新版本已准备就绪",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "检查更新",
|
||||
"com.affine.aboutAFFiNE.community.title": "社区",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNE 社区",
|
||||
"com.affine.aboutAFFiNE.contact.title": "联系我们",
|
||||
"com.affine.aboutAFFiNE.contact.website": "官网",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "隐私",
|
||||
"com.affine.aboutAFFiNE.legal.title": "法律信息",
|
||||
"com.affine.aboutAFFiNE.legal.tos": "使用条款",
|
||||
"com.affine.aboutAFFiNE.subtitle": "关于AFFiNE的资讯",
|
||||
"com.affine.aboutAFFiNE.title": "关于 AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "应用版本",
|
||||
"com.affine.aboutAFFiNE.version.editor.title": "编辑器版本",
|
||||
"com.affine.aboutAFFiNE.version.title": "版本",
|
||||
"com.affine.appearanceSettings.clientBorder.description": "自定义客户端外观。",
|
||||
"com.affine.appearanceSettings.clientBorder.title": "客户端边框样式",
|
||||
"com.affine.appearanceSettings.color.description": "选择你的配色方案",
|
||||
"com.affine.appearanceSettings.color.title": "配色方案",
|
||||
"com.affine.appearanceSettings.date.title": "日期",
|
||||
"com.affine.appearanceSettings.dateFormat.description": "定制您的日期格式。",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "日期格式",
|
||||
"com.affine.appearanceSettings.font.description": "选择你的字体风格",
|
||||
"com.affine.appearanceSettings.font.title": "字体",
|
||||
"com.affine.appearanceSettings.fontStyle.sans": "无衬线",
|
||||
"com.affine.appearanceSettings.fontStyle.serif": "衬线",
|
||||
"com.affine.appearanceSettings.fontStyle.mono": "等宽",
|
||||
"com.affine.appearanceSettings.fullWidth.description": "页面内容的最大显示量。",
|
||||
"com.affine.appearanceSettings.fullWidth.title": "全宽布局",
|
||||
"com.affine.appearanceSettings.language.description": "选择界面语言。",
|
||||
"com.affine.appearanceSettings.language.title": "显示语言",
|
||||
"com.affine.appearanceSettings.noisyBackground.description": "在侧边栏使用噪点背景效果。",
|
||||
"com.affine.appearanceSettings.noisyBackground.title": "侧边栏的噪点背景",
|
||||
"com.affine.appearanceSettings.sidebar.title": "侧边栏",
|
||||
"com.affine.appearanceSettings.startWeek.description": "默认情况下,一周从星期日开始。",
|
||||
"com.affine.appearanceSettings.startWeek.title": "一周从周一开始",
|
||||
"com.affine.appearanceSettings.subtitle": "定制您的 AFFiNE 外观",
|
||||
"com.affine.appearanceSettings.theme.title": "主题",
|
||||
"com.affine.appearanceSettings.title": "外观设置",
|
||||
"com.affine.appearanceSettings.translucentUI.description": "在侧边栏使用半透明效果。",
|
||||
"com.affine.appearanceSettings.translucentUI.title": "侧边栏的透明效果",
|
||||
"com.affine.appearanceSettings.windowFrame.description": "自定义 Windows 客户端外观。",
|
||||
"com.affine.appearanceSettings.windowFrame.frameless": "无边框",
|
||||
"com.affine.appearanceSettings.windowFrame.NativeTitleBar": "原生标题栏",
|
||||
"com.affine.appearanceSettings.windowFrame.title": "视窗样式",
|
||||
"com.affine.appUpdater.downloading": "下载中",
|
||||
"com.affine.appUpdater.installUpdate": "重新启动以安装更新",
|
||||
"com.affine.appUpdater.openDownloadPage": "打开下载页面",
|
||||
"com.affine.appUpdater.updateAvailable": "有可用的更新",
|
||||
"com.affine.appUpdater.whatsNew": "发现最近更新!",
|
||||
"com.affine.backButton": "返回首页",
|
||||
"com.affine.banner.content": "此演示有限。<1>下载 AFFiNE 客户端</1>以获取最新功能和表现。",
|
||||
"com.affine.brand.affineCloud": "AFFiNE Cloud",
|
||||
"com.affine.cloudTempDisable.description": "我们正在升级 AFFiNE Cloud 服务,客户端暂时不可启用它。如果您希望随时了解进度并收到关于云服务的可用性通知,您可以填写我们的<1>表单</1>。",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNE Cloud 正在进行升级。",
|
||||
"com.affine.confirmModal.button.cancel": "取消",
|
||||
"com.affine.currentYear": "今年",
|
||||
"com.affine.deleteLeaveWorkspace.description": "从此设备中删除工作区,并可选择删除所有数据。",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "退出工作区",
|
||||
"com.affine.draw_with_a_blank_whiteboard": "在空白白板画画",
|
||||
"com.affine.earlier": "更早",
|
||||
"com.affine.editCollection.button.cancel": "取消",
|
||||
"com.affine.editCollection.button.create": "创建",
|
||||
"com.affine.editCollection.save": "保存",
|
||||
"com.affine.emptyDesc": "这里还没有页面",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "取消",
|
||||
"com.affine.export.error.message": "请稍后再试。",
|
||||
"com.affine.export.error.title": "未知错误引发导出失败",
|
||||
"com.affine.export.success.message": "请打开下载文件夹以查看。",
|
||||
"com.affine.export.success.title": "导出成功",
|
||||
"com.affine.favoritePageOperation.add": "加入收藏",
|
||||
"com.affine.favoritePageOperation.remove": "从收藏中移除",
|
||||
"com.affine.filter": "筛选",
|
||||
"com.affine.filter.after": "晚于",
|
||||
"com.affine.filter.before": "早于",
|
||||
"com.affine.filter.false": "否",
|
||||
"com.affine.filter.is": "为",
|
||||
"com.affine.filter.is-favourited": "已收藏",
|
||||
"com.affine.filter.save-view": "保存视图",
|
||||
"com.affine.filter.true": "是",
|
||||
"com.affine.helpIsland.contactUs": "联系我们",
|
||||
"com.affine.helpIsland.gettingStarted": "开始使用",
|
||||
"com.affine.helpIsland.helpAndFeedback": "帮助与反馈",
|
||||
"com.affine.import_file": "支持 Markdown/Notion",
|
||||
"com.affine.inviteModal.button.cancel": "取消",
|
||||
"com.affine.keyboardShortcuts.appendDailyNote": "附加到随笔",
|
||||
"com.affine.keyboardShortcuts.bodyText": "正文",
|
||||
"com.affine.keyboardShortcuts.bold": "粗体",
|
||||
"com.affine.keyboardShortcuts.cancel": "取消",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "代码块",
|
||||
"com.affine.keyboardShortcuts.curveConnector": "曲线连接",
|
||||
"com.affine.keyboardShortcuts.divider": "分割线",
|
||||
"com.affine.keyboardShortcuts.elbowedConnector": "弯曲连接",
|
||||
"com.affine.keyboardShortcuts.expandOrCollapseSidebar": "展开/折叠侧边栏",
|
||||
"com.affine.keyboardShortcuts.goBack": "返回",
|
||||
"com.affine.keyboardShortcuts.goForward": "前进",
|
||||
"com.affine.keyboardShortcuts.group": "分组",
|
||||
"com.affine.keyboardShortcuts.groupDatabase": "作为数据库分组",
|
||||
"com.affine.keyboardShortcuts.hand": "拖放",
|
||||
"com.affine.keyboardShortcuts.heading": "标题 {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "图像",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "增加缩进",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "行内代码",
|
||||
"com.affine.keyboardShortcuts.italic": "斜体",
|
||||
"com.affine.keyboardShortcuts.link": "超链接(选定文本)",
|
||||
"com.affine.keyboardShortcuts.moveDown": "下移",
|
||||
"com.affine.keyboardShortcuts.moveUp": "上移",
|
||||
"com.affine.keyboardShortcuts.newPage": "新建页面",
|
||||
"com.affine.keyboardShortcuts.note": "笔记",
|
||||
"com.affine.keyboardShortcuts.pen": "笔",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "快速搜索",
|
||||
"com.affine.keyboardShortcuts.redo": "重做",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "减少缩进",
|
||||
"com.affine.keyboardShortcuts.select": "选择",
|
||||
"com.affine.keyboardShortcuts.selectAll": "全选",
|
||||
"com.affine.keyboardShortcuts.shape": "图形",
|
||||
"com.affine.keyboardShortcuts.straightConnector": "直线连接",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "删除线",
|
||||
"com.affine.keyboardShortcuts.subtitle": "快速查看快捷键",
|
||||
"com.affine.keyboardShortcuts.text": "文本",
|
||||
"com.affine.keyboardShortcuts.title": "键盘快捷键",
|
||||
"com.affine.keyboardShortcuts.underline": "下划线",
|
||||
"com.affine.keyboardShortcuts.undo": "撤销",
|
||||
"com.affine.keyboardShortcuts.unGroup": "取消分组",
|
||||
"com.affine.keyboardShortcuts.zoomIn": "放大",
|
||||
"com.affine.keyboardShortcuts.zoomOut": "缩小",
|
||||
"com.affine.keyboardShortcuts.zoomTo100": "缩放至 100%",
|
||||
"com.affine.keyboardShortcuts.zoomToFit": "缩放至适当尺寸",
|
||||
"com.affine.last30Days": "过去 30 天",
|
||||
"com.affine.last7Days": "过去 7 天",
|
||||
"com.affine.lastMonth": "上个月",
|
||||
"com.affine.lastWeek": "上周",
|
||||
"com.affine.lastYear": "去年",
|
||||
"com.affine.moveToTrash.confirmModal.description": "{{title}} 将被移到垃圾箱",
|
||||
"com.affine.moveToTrash.confirmModal.title": "确定要删除页面?",
|
||||
"com.affine.moveToTrash.title": "移到垃圾箱",
|
||||
"com.affine.nameWorkspace.button.cancel": "取消",
|
||||
"com.affine.nameWorkspace.button.create": "创建",
|
||||
"com.affine.nameWorkspace.description": "工作区是为个人和团队进行引用、创建和规划的虚拟空间。",
|
||||
"com.affine.nameWorkspace.placeholder": "设置工作区名字",
|
||||
"com.affine.nameWorkspace.title": "给您的工作区命名",
|
||||
"com.affine.new_edgeless": "新的无边页面",
|
||||
"com.affine.new_import": "导入",
|
||||
"com.affine.notFoundPage.backButton": "返回首页",
|
||||
"com.affine.notFoundPage.title": "404 - 页面不见了",
|
||||
"com.affine.onboarding.title1": "白板和文档的超融合",
|
||||
"com.affine.onboarding.title2": "直观且强大的块级编辑",
|
||||
"com.affine.onboarding.videoDescription1": "在页面模式和白板模式之间轻松切换,你可以在页面模式下创建结构化文档,并在白板模式下自由表达创意思想。",
|
||||
"com.affine.onboarding.videoDescription2": "轻松创建结构化文档,使用模块化界面将文本块、图像和其他内容拖放到页面中。",
|
||||
"com.affine.openPageOperation.newTab": "在新标签页打开",
|
||||
"com.affine.pageMode.all": "全部",
|
||||
"com.affine.pageMode.edgeless": "无界",
|
||||
"com.affine.pageMode.page": "页面",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "取消",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "禁用",
|
||||
"com.affine.publicLinkDisableModal.description": "禁用此公共链接将阻止任何拥有此链接的人访问此页面。",
|
||||
"com.affine.publicLinkDisableModal.title": "禁用公共链接 ?",
|
||||
"com.affine.rootAppSidebar.collections": "精选",
|
||||
"com.affine.rootAppSidebar.favorites": "收藏夹",
|
||||
"com.affine.rootAppSidebar.others": "其他",
|
||||
"com.affine.setDBLocation.button.customize": "自定义",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "默认位置",
|
||||
"com.affine.setDBLocation.description": "选择您要创建工作区的位置。工作区的数据默认情况下会保存在本地。",
|
||||
"com.affine.setDBLocation.title": "设置数据库位置",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "默认情况下将保存到 {{location}}",
|
||||
"com.affine.setSyncingMode.button.continue": "继续",
|
||||
"com.affine.setSyncingMode.cloud": "使用 AFFiNE Cloud 在多个设备间进行同步",
|
||||
"com.affine.setSyncingMode.deviceOnly": "仅在当前设备上使用",
|
||||
"com.affine.setSyncingMode.title.added": "导入成功",
|
||||
"com.affine.setSyncingMode.title.created": "创建成功",
|
||||
"com.affine.settings.appearance": "外观",
|
||||
"com.affine.settings.auto-check-description": "如果启用,它将定期自动检查新版本。",
|
||||
"com.affine.settings.auto-download-description": "如果启用,新版本将自动下载到当前设备。",
|
||||
"com.affine.settings.member-tooltip": "启用 AFFiNE Cloud 以与他人协作",
|
||||
"com.affine.settings.remove-workspace": "删除工作区",
|
||||
"com.affine.settings.suggestion": "需要更多定制选项?您可以在社区中向我们推荐它们。",
|
||||
"com.affine.settings.workspace.description": "您可以在此处自定义您的工作区。",
|
||||
"com.affine.settings.workspace.not-owner": "只有所有者才能编辑工作区头像和名称。更改将向所有人显示。",
|
||||
"com.affine.settings.workspace.publish-tooltip": "启用 AFFiNE Cloud 以发布此 Workspace",
|
||||
"com.affine.settings.workspace.storage.tip": "点击可移动存储位置。",
|
||||
"com.affine.settingSidebar.settings.general": "常规",
|
||||
"com.affine.settingSidebar.settings.workspace": "工作区",
|
||||
"com.affine.settingSidebar.title": "设置",
|
||||
"com.affine.shortcutsTitle.edgeless": "无界",
|
||||
"com.affine.shortcutsTitle.general": "常规",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown 语法",
|
||||
"com.affine.shortcutsTitle.page": "页面",
|
||||
"com.affine.sidebarSwitch.collapse": "折叠侧边栏",
|
||||
"com.affine.sidebarSwitch.expand": "展开侧边栏",
|
||||
"com.affine.themeSettings.dark": "深色",
|
||||
"com.affine.themeSettings.light": "浅色",
|
||||
"com.affine.themeSettings.system": "跟随系统",
|
||||
"com.affine.toastMessage.addedFavorites": "已收藏",
|
||||
"com.affine.toastMessage.edgelessMode": "无界模式",
|
||||
"com.affine.toastMessage.movedTrash": "已移到垃圾箱",
|
||||
"com.affine.toastMessage.pageMode": "页面模式",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "已永久删除",
|
||||
"com.affine.toastMessage.removedFavorites": "已从收藏中移除",
|
||||
"com.affine.toastMessage.restored": "{{title}} 已恢复",
|
||||
"com.affine.toastMessage.successfullyDeleted": "成功删除。",
|
||||
"com.affine.today": "今天",
|
||||
"com.affine.trashOperation.delete": "删除",
|
||||
"com.affine.trashOperation.delete.description": "一旦删除,将无法撤消此操作。确定吗?",
|
||||
"com.affine.trashOperation.delete.title": "永久删除",
|
||||
"com.affine.trashOperation.deletePermanently": "永久删除",
|
||||
"com.affine.trashOperation.restoreIt": "恢复TA",
|
||||
"com.affine.workspace.cannot-delete": "您无法删除最后一个工作区",
|
||||
"com.affine.workspaceDelete.button.cancel": "取消",
|
||||
"com.affine.workspaceDelete.button.delete": "删除",
|
||||
"com.affine.workspaceDelete.description": "正在删除 <1>{{workspace}}</1> ,此操作无法撤销,所有内容将会丢失。",
|
||||
"com.affine.workspaceDelete.description2": "正在删除<1>{{workspace}}</1> ,将同时删除本地和云端数据。此操作无法撤消,请谨慎操作。",
|
||||
"com.affine.workspaceDelete.placeholder": "请输入工作区名字以确认",
|
||||
"com.affine.workspaceDelete.title": "删除工作空间",
|
||||
"com.affine.workspaceLeave.button.cancel": "取消",
|
||||
"com.affine.workspaceLeave.button.leave": "退出",
|
||||
"com.affine.workspaceLeave.description": "退出后,您将无法再访问此工作区的内容。",
|
||||
"com.affine.workspaceSubPath.all": "全部页面",
|
||||
"com.affine.workspaceSubPath.trash": "垃圾箱",
|
||||
"com.affine.workspaceType.cloud": "云端工作区",
|
||||
"com.affine.workspaceType.joined": "加入工作区",
|
||||
"com.affine.workspaceType.local": "本地工作区",
|
||||
"com.affine.workspaceType.offline": "可供离线使用",
|
||||
"com.affine.write_with_a_blank_page": "在空白页面书写",
|
||||
"com.affine.yesterday": "昨天",
|
||||
"Confirm": "确认",
|
||||
"Connector": "链接",
|
||||
"Continue with Google": "谷歌登录以继续",
|
||||
"Convert to ": "转换为",
|
||||
"Copied link to clipboard": "复制链接到剪贴板",
|
||||
"Copy": "复制",
|
||||
"Copy Link": "复制链接",
|
||||
"core": "核心",
|
||||
"Create": "创建",
|
||||
"Create Or Import": "创建或导入",
|
||||
"Create Shared Link Description": "创建一个可以轻松分享给任何人的链接",
|
||||
"Create your own workspace": "创建属于你的工作区",
|
||||
"Created": "创建时间",
|
||||
"Created with": "创建于",
|
||||
"Data sync mode": "数据同步模式",
|
||||
"DB_FILE_ALREADY_LOADED": "数据库文件已加载",
|
||||
"DB_FILE_INVALID": "无效的数据库文件",
|
||||
"DB_FILE_PATH_INVALID": "数据库文件路径无效",
|
||||
"Delete": "删除",
|
||||
"Delete Member?": "删除成员?",
|
||||
"Delete Workspace Label Hint": "在删除此工作区后,您将永久删除所有内容,任何人都无法恢复此工作区的内容。",
|
||||
"Delete Workspace placeholder": "请输入”Delete“以确认",
|
||||
"Disable": "禁用",
|
||||
"Disable Public Link": "禁用公共链接",
|
||||
"Disable Public Sharing": "禁用公开分享",
|
||||
"Download all data": "下载所有数据",
|
||||
"Download core data": "下载核心数据",
|
||||
"Download data": "下载 {{CoreOrAll}} 数据",
|
||||
"Download data Description1": "此操作会在你的设备上占用更多空间。",
|
||||
"Download data Description2": "此操作会在你的设备上占用少许空间。",
|
||||
"Edit": "编辑",
|
||||
"emptyAllPages": "此工作区为空。创建新页面并开始编辑。",
|
||||
"emptyAllPagesClient": "点击 <1>$t(New Page)</1> 按钮或按 <3>{{shortcut}}</3> 以创建您的第一个页面。",
|
||||
"emptyFavorite": "单击“添加到收藏夹”,页面将显示在此处。",
|
||||
"emptySharedPages": "共享的页面将显示在此处。",
|
||||
"emptyTrash": "单击“添加到垃圾箱”,页面将显示在此处。",
|
||||
"Enable": "启用",
|
||||
"Enable AFFiNE Cloud": "启用 AFFiNE Cloud 服务",
|
||||
"Enable AFFiNE Cloud Description": "如启用,此工作区中的数据将通过 AFFiNE Cloud 进行备份和同步。",
|
||||
"Enable cloud hint": "以下功能依赖于 AFFiNE Cloud。 所有数据都存储在当前设备上。 您可以为此工作区启用 AFFiNE Cloud,以保持数据与云同步。",
|
||||
"Enabled success": "启用成功",
|
||||
"Export": "导出",
|
||||
"Export AFFiNE backup file": "导出 AFFiNE 备份文件",
|
||||
"Export Description": "您可以导出整个工作区数据进行备份,导出的数据可以重新被导入。",
|
||||
"Export Shared Pages Description": "下载页面的静态副本以与他人分享。",
|
||||
"Export success": "导出成功",
|
||||
"Export to HTML": "导出为 HTML",
|
||||
"Export to Markdown": "导出为 Markdown",
|
||||
"Export to PDF": "导出为 PDF",
|
||||
"Export to PNG": "导出为 PNG",
|
||||
"Export Workspace": "导出工作区 <1>{{workspace}}</1> 即将上线",
|
||||
"Failed to publish workspace": "工作区发布失败",
|
||||
"Favorite": "收藏",
|
||||
"Favorite pages for easy access": "将页面添加到收藏夹以便轻松访问",
|
||||
"Favorited": "已收藏",
|
||||
"FILE_ALREADY_EXISTS": "文件已存在",
|
||||
"Find 0 result": "找到 0 个结果",
|
||||
"Find results": "找到 {{number}} 个结果",
|
||||
"Force Sign Out": "强制登出",
|
||||
"Get in touch!": "保持联络!",
|
||||
"Get in touch! Join our communities": "保持联系!加入我们的社区。",
|
||||
"Get in touch! Join our communities.": "加入社区,保持联络!",
|
||||
"Got it": "知道了",
|
||||
"How is AFFiNE Alpha different?": "AFFiNE Alpha 有何不同?",
|
||||
"Import": "导入",
|
||||
"Info": "信息",
|
||||
"Invite": "邀请",
|
||||
"Invite Members": "邀请成员",
|
||||
"Invite placeholder": "搜索邮件(仅支持Gmail)",
|
||||
"is a Cloud Workspace": "是云端工作区",
|
||||
"is a Local Workspace": "是本地工作区",
|
||||
"It takes up little space on your device": "它会在你的设备上占用少许空间。",
|
||||
"It takes up little space on your device.": "此操作会在你的设备上占用少许空间。",
|
||||
"It takes up more space on your device": "它会在你的设备上占用更多空间。",
|
||||
"It takes up more space on your device.": "此操作会在你的设备上占用更多空间。",
|
||||
"Jump to": "跳转到",
|
||||
"Loading": "加载中...",
|
||||
"Local Workspace Description": "所有数据都本地存储在当前设备。您可以为此工作区启用 AFFiNE Cloud,以保证数据时刻被云端同步。",
|
||||
"login success": "登录成功",
|
||||
"Member": "成员",
|
||||
"Member has been removed": "{{name}} 已被移除。",
|
||||
"Members": "成员",
|
||||
"Members hint": "在这里管理成员,通过电子邮件邀请新成员。",
|
||||
"mobile device": "貌似你正在移动设备上浏览。",
|
||||
"mobile device description": "我们仍在进行移动端的支持工作,建议使用桌面设备。",
|
||||
"Move folder": "移动文件夹",
|
||||
"Move folder hint": "选择新的存储位置",
|
||||
"Move folder success": "移动文件夹成功",
|
||||
"Move page to": "将此页面移动到...",
|
||||
"Move page to...": "将此页面移动...",
|
||||
"Move to": "移动到",
|
||||
"Moved to Trash": "已移到垃圾箱",
|
||||
"My Workspaces": "我的工作区",
|
||||
"Navigation Path": "导航路径",
|
||||
"New Keyword Page": "新建 “{{query}}“ 为标题的页面 ",
|
||||
"New Page": "新建页面",
|
||||
"New Workspace": "新建工作区",
|
||||
"No item": "无项目",
|
||||
"Non-Gmail": "不支持非 Gmail 邮箱",
|
||||
"None yet": "还没有",
|
||||
"Not now": "稍后再说",
|
||||
"Open folder": "打开文件夹",
|
||||
"Open folder hint": "检查存储文件夹的位置。",
|
||||
"Open Workspace Settings": "打开工作区设置",
|
||||
"Organize pages to build knowledge": "组织页面以建立知识库。",
|
||||
"Owner": "所有者",
|
||||
"Paper": "文档",
|
||||
"Pending": "待定",
|
||||
"Pivots": "枢纽",
|
||||
"Please make sure you are online": "请确保你在线",
|
||||
"Publish": "发布",
|
||||
"Publish to web": "发布到web",
|
||||
"Published Description": "当前工作区已被发布到 Web,所有人都可以通过链接来查看此工作区内容。",
|
||||
"Published hint": "访客可以通过提供的链接查看内容。",
|
||||
"Published to Web": "公开到互联网",
|
||||
"Publishing": "发布到 web 需要 AFFiNE Cloud 服务。",
|
||||
"Publishing Description": "发布到 web 后,所有人都可以通过链接查看此工作区的内容。",
|
||||
"Quick search": "快速搜索",
|
||||
"Quick search placeholder": "快速搜索...",
|
||||
"Quick search placeholder2": "在{{workspace}} 中搜索",
|
||||
"Recent": "最近",
|
||||
"recommendBrowser": "建议使用 <1>Chrome</1> 浏览器以获得最佳体验。",
|
||||
"Remove from Pivots": "从枢纽中删除",
|
||||
"Remove from workspace": "从工作区移除",
|
||||
"Rename": "重命名",
|
||||
"Restart Install Client Update": "重启以安装更新",
|
||||
"Retain cached cloud data": "保留缓存的云数据",
|
||||
"Retain local cached data": "保留本地缓存数据",
|
||||
"RFP": "页面可以从枢纽上被自由添加或删除,但仍然可以在“所有页面”中访问。",
|
||||
"Saved then enable AFFiNE Cloud": "所有改动已保存在本地,点击启用 AFFiNE Cloud 服务。",
|
||||
"Set up an AFFiNE account to sync data": "设置AFFiNE帐户以同步数据",
|
||||
"Share Menu Public Workspace Description1": "邀请其他人加入工作区或将其发布到网络。",
|
||||
"Share Menu Public Workspace Description2": "当前工作区已被发布到网络作为公共工作区。",
|
||||
"Share with link": "通过链接分享",
|
||||
"Shared Pages": "已分享页面",
|
||||
"Shared Pages Description": "公开分享页面需要 AFFiNE Cloud 服务。",
|
||||
"Shared Pages In Public Workspace Description": "整个工作区已在网络上发布,可以通过<1>工作区设置</1>进行编辑。",
|
||||
"Shortcuts": "快捷键",
|
||||
"Sign in": "登录 AFFiNE Cloud",
|
||||
"Sign in and Enable": "登录并启用",
|
||||
"Sign out": "登出 AFFiNE 云",
|
||||
"Sign out description": "登出会导致未同步的内容丢失",
|
||||
"Skip": "跳过",
|
||||
"Stay logged out": "保持登出状态",
|
||||
"Sticky": "便利贴",
|
||||
"still designed": "(此页面仍在设计中。)",
|
||||
"Stop publishing": "中止发布",
|
||||
"Storage": "储存",
|
||||
"Storage and Export": "储存与导出",
|
||||
"Storage Folder": "存储文件夹",
|
||||
"Sync": "同步",
|
||||
"Synced with AFFiNE Cloud": "AFFiNE Cloud 同步完成",
|
||||
"Title": "标题",
|
||||
"UNKNOWN_ERROR": "未知错误",
|
||||
"Unpublished hint": "发布到网络后,访问者可以通过提供的链接查看内容。",
|
||||
"Untitled": "未命名",
|
||||
"Update Available": "有可用的更新",
|
||||
"Update workspace name success": "成功更新工作区名称",
|
||||
"Updated": "更新时间",
|
||||
"upgradeBrowser": "请升级到最新版本的 Chrome 以获得最佳体验。",
|
||||
"Upload": "上传",
|
||||
"Users": "用户",
|
||||
"View Navigation Path": "查看导航路径",
|
||||
"Wait for Sync": "等待同步",
|
||||
"will delete member": "将删除成员",
|
||||
"Workspace Avatar": "工作区头像",
|
||||
"Workspace Icon": "工作区图标",
|
||||
"Workspace Name": "工作区名称",
|
||||
"Workspace Not Found": "未找到工作区",
|
||||
"Workspace Owner": "工作区所有者",
|
||||
"Workspace Profile": "工作区配置文件",
|
||||
"Workspace saved locally": "{{name}} 已保存在本地",
|
||||
"Workspace Settings": "工作区设置",
|
||||
"Workspace Settings with name": "{{name}} 的设置",
|
||||
"Workspace Type": "工作区类型",
|
||||
"You cannot delete the last workspace": "您不能删除最后一个工作区"
|
||||
}
|
||||
447
packages/frontend/i18n/src/resources/zh-Hant.json
Normal file
447
packages/frontend/i18n/src/resources/zh-Hant.json
Normal file
@@ -0,0 +1,447 @@
|
||||
{
|
||||
"Access level": "訪問權限",
|
||||
"Add a subpage inside": "建立子頁面",
|
||||
"Add Workspace": "建立 Workspace",
|
||||
"Add Workspace Hint": "選擇已有數據庫檔",
|
||||
"All changes are saved locally": "所有修訂已儲存在本機",
|
||||
"All data has been stored in the cloud": "所有修訂已儲存在雲端",
|
||||
"Back to Quick Search": "回到快速搜尋",
|
||||
"Change avatar hint": "新頭像將公開。",
|
||||
"Change workspace name hint": "新名稱將公開。",
|
||||
"Check Our Docs": "查閱我哋嘅文檔",
|
||||
"Cloud Workspace Description": "全部數據都會保存並透過AFFINE帳戶同步 <1>{{email}}</1>",
|
||||
"Collaboration": "協作",
|
||||
"Collaboration Description": "同其他成員協作需要 AFFiNE Cloud 服務。",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.description": "定期自動檢查更新。",
|
||||
"com.affine.aboutAFFiNE.autoCheckUpdate.title": "自動檢查更新",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.description": "自動下載更新(到本機)。",
|
||||
"com.affine.aboutAFFiNE.autoDownloadUpdate.title": "自動下載更新",
|
||||
"com.affine.aboutAFFiNE.changelog.description": "查看 AFFiNE 更新日誌。",
|
||||
"com.affine.aboutAFFiNE.changelog.title": "探索 What's new",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.description": "新版本已準備就緒",
|
||||
"com.affine.aboutAFFiNE.checkUpdate.title": "檢查更新",
|
||||
"com.affine.aboutAFFiNE.community.title": "社群",
|
||||
"com.affine.aboutAFFiNE.contact.community": "AFFiNE 社群",
|
||||
"com.affine.aboutAFFiNE.contact.title": "聯絡我哋",
|
||||
"com.affine.aboutAFFiNE.contact.website": "官方網站",
|
||||
"com.affine.aboutAFFiNE.legal.privacy": "隱私",
|
||||
"com.affine.aboutAFFiNE.legal.title": "法律資訊",
|
||||
"com.affine.aboutAFFiNE.legal.tos": "使用條款",
|
||||
"com.affine.aboutAFFiNE.subtitle": "關於 AFFiNE 的資訊",
|
||||
"com.affine.aboutAFFiNE.title": "關於 AFFiNE",
|
||||
"com.affine.aboutAFFiNE.version.app": "App 版本",
|
||||
"com.affine.aboutAFFiNE.version.editor.title": "編輯器版本",
|
||||
"com.affine.aboutAFFiNE.version.title": "版本",
|
||||
"com.affine.appearanceSettings.clientBorder.description": "訂製用戶端外觀。",
|
||||
"com.affine.appearanceSettings.clientBorder.title": "用戶端邊框樣式",
|
||||
"com.affine.appearanceSettings.color.description": "選擇你的配色",
|
||||
"com.affine.appearanceSettings.color.title": "配色",
|
||||
"com.affine.appearanceSettings.date.title": "日期",
|
||||
"com.affine.appearanceSettings.dateFormat.description": "訂製你的日期樣式",
|
||||
"com.affine.appearanceSettings.dateFormat.title": "日期格式",
|
||||
"com.affine.appearanceSettings.font.description": "選擇你的字體風格",
|
||||
"com.affine.appearanceSettings.font.title": "字形",
|
||||
"com.affine.appearanceSettings.fontStyle.sans": "無襯線",
|
||||
"com.affine.appearanceSettings.fontStyle.serif": "襯線",
|
||||
"com.affine.appearanceSettings.fontStyle.mono": "等寬",
|
||||
"com.affine.appearanceSettings.fullWidth.description": "頁面內內容的最大顯示量。",
|
||||
"com.affine.appearanceSettings.fullWidth.title": "全寬佈局",
|
||||
"com.affine.appearanceSettings.language.description": "選擇介面語言。",
|
||||
"com.affine.appearanceSettings.language.title": "外觀語言",
|
||||
"com.affine.appearanceSettings.noisyBackground.description": "在側欄背景使用雜訊效果。",
|
||||
"com.affine.appearanceSettings.noisyBackground.title": "側欄背景雜訊效果",
|
||||
"com.affine.appearanceSettings.sidebar.title": "側欄",
|
||||
"com.affine.appearanceSettings.startWeek.description": "預設下一星期的第一日為週日。",
|
||||
"com.affine.appearanceSettings.startWeek.title": "每週從周一開始",
|
||||
"com.affine.appearanceSettings.subtitle": "訂製你的 AFFiNE 外觀",
|
||||
"com.affine.appearanceSettings.theme.title": "主題",
|
||||
"com.affine.appearanceSettings.title": "外觀設定",
|
||||
"com.affine.appearanceSettings.translucentUI.description": "在側欄使用透明效果。",
|
||||
"com.affine.appearanceSettings.translucentUI.title": "側欄半透明用戶介面",
|
||||
"com.affine.appearanceSettings.windowFrame.description": "定製 Windows 用戶端外觀。",
|
||||
"com.affine.appearanceSettings.windowFrame.frameless": "無框",
|
||||
"com.affine.appearanceSettings.windowFrame.NativeTitleBar": "原生標題列",
|
||||
"com.affine.appearanceSettings.windowFrame.title": "視窗樣式",
|
||||
"com.affine.appUpdater.downloading": "下載中",
|
||||
"com.affine.appUpdater.installUpdate": "重啟以安裝更新",
|
||||
"com.affine.appUpdater.openDownloadPage": "打開下載頁面",
|
||||
"com.affine.appUpdater.updateAvailable": "更新可用",
|
||||
"com.affine.appUpdater.whatsNew": "探索 What's new!",
|
||||
"com.affine.backButton": "回到主頁",
|
||||
"com.affine.banner.content": "此演示有限。<1>下載 AFFiNE 客戶端</1>以獲取最新功能和表現。",
|
||||
"com.affine.brand.affineCloud": "\nAFFiNE Cloud",
|
||||
"com.affine.cloudTempDisable.description": "我們正在升級 AFFiNE Cloud 服務,客戶端暫時不可用。 如果您希望隨時了解進度並收到可用性通知,您可以填寫我們的<1>表單</1>。",
|
||||
"com.affine.cloudTempDisable.title": "AFFiNE Cloud 正進行升級。",
|
||||
"com.affine.collection-bar.action.tooltip.delete": "刪除",
|
||||
"com.affine.collection-bar.action.tooltip.edit": "編輯",
|
||||
"com.affine.collection-bar.action.tooltip.pin": "固定到側欄",
|
||||
"com.affine.collection-bar.action.tooltip.unpin": "取消固定",
|
||||
"com.affine.collectionBar.backToAll": "回到全部",
|
||||
"com.affine.confirmModal.button.cancel": "取消",
|
||||
"com.affine.currentYear": "本年度",
|
||||
"com.affine.deleteLeaveWorkspace.description": "從本機刪除 Workspace,並可選擇刪除所有數據。",
|
||||
"com.affine.deleteLeaveWorkspace.leave": "離開 Workspace",
|
||||
"com.affine.draw_with_a_blank_whiteboard": "使用空白白板繪圖",
|
||||
"com.affine.earlier": "早些時候",
|
||||
"com.affine.editCollection.button.cancel": "取消",
|
||||
"com.affine.editCollection.button.create": "建立",
|
||||
"com.affine.editCollection.save": "保存",
|
||||
"com.affine.editCollection.saveCollection": "另存為新收藏集",
|
||||
"com.affine.editCollection.updateCollection": "更新收藏集",
|
||||
"com.affine.editorModeSwitch.tooltip": "開閂掣",
|
||||
"com.affine.emptyDesc": "仲未有頁面",
|
||||
"com.affine.enableAffineCloudModal.button.cancel": "取消",
|
||||
"com.affine.export.error.message": "請稍後再試。",
|
||||
"com.affine.export.error.title": "由於意外錯誤,匯出失敗",
|
||||
"com.affine.export.success.message": "請打開下載資料夾以檢查。",
|
||||
"com.affine.export.success.title": "匯出成功",
|
||||
"com.affine.favoritePageOperation.add": "加入收藏",
|
||||
"com.affine.favoritePageOperation.remove": "從我的收藏中刪除",
|
||||
"com.affine.filter": "篩選器",
|
||||
"com.affine.filter.after": "晚於",
|
||||
"com.affine.filter.before": "早於",
|
||||
"com.affine.filter.contains all": "包含所有",
|
||||
"com.affine.filter.contains one of": "包含以下之一",
|
||||
"com.affine.filter.does not contains all": "不包含所有",
|
||||
"com.affine.filter.does not contains one of": "不包含以下之一",
|
||||
"com.affine.filter.false": "否",
|
||||
"com.affine.filter.is": "為",
|
||||
"com.affine.filter.is empty": "為空",
|
||||
"com.affine.filter.is not empty": "不為空",
|
||||
"com.affine.filter.is-favourited": "已收藏",
|
||||
"com.affine.filter.save-view": "保存檢視",
|
||||
"com.affine.filter.true": "是",
|
||||
"com.affine.header.option.add-tag": "添加標籤",
|
||||
"com.affine.header.option.duplicate": "製作替身",
|
||||
"com.affine.helpIsland.contactUs": "聯絡我哋",
|
||||
"com.affine.helpIsland.gettingStarted": "開始使用",
|
||||
"com.affine.helpIsland.helpAndFeedback": "幫助和反饋",
|
||||
"com.affine.import_file": "支援 Markdown/Notion",
|
||||
"com.affine.inviteModal.button.cancel": "取消",
|
||||
"com.affine.keyboardShortcuts.appendDailyNote": "附加到隨筆",
|
||||
"com.affine.keyboardShortcuts.bodyText": "正文",
|
||||
"com.affine.keyboardShortcuts.bold": "粗體",
|
||||
"com.affine.keyboardShortcuts.cancel": "取消",
|
||||
"com.affine.keyboardShortcuts.codeBlock": "代碼塊",
|
||||
"com.affine.keyboardShortcuts.curveConnector": "曲線連接",
|
||||
"com.affine.keyboardShortcuts.divider": "分割線",
|
||||
"com.affine.keyboardShortcuts.elbowedConnector": "彎曲連接器",
|
||||
"com.affine.keyboardShortcuts.expandOrCollapseSidebar": "展開/收起邊欄",
|
||||
"com.affine.keyboardShortcuts.goBack": "返回",
|
||||
"com.affine.keyboardShortcuts.goForward": "前進",
|
||||
"com.affine.keyboardShortcuts.group": "分組",
|
||||
"com.affine.keyboardShortcuts.groupDatabase": "分組為資料庫",
|
||||
"com.affine.keyboardShortcuts.hand": "拖放",
|
||||
"com.affine.keyboardShortcuts.heading": "標題 {{number}}",
|
||||
"com.affine.keyboardShortcuts.image": "圖像",
|
||||
"com.affine.keyboardShortcuts.increaseIndent": "增加縮進",
|
||||
"com.affine.keyboardShortcuts.inlineCode": "內聯代碼",
|
||||
"com.affine.keyboardShortcuts.italic": "斜體",
|
||||
"com.affine.keyboardShortcuts.link": "超連結(帶有所選文字)",
|
||||
"com.affine.keyboardShortcuts.moveDown": "下移",
|
||||
"com.affine.keyboardShortcuts.moveUp": "上移",
|
||||
"com.affine.keyboardShortcuts.newPage": "新頁面",
|
||||
"com.affine.keyboardShortcuts.note": "筆記",
|
||||
"com.affine.keyboardShortcuts.pen": "筆",
|
||||
"com.affine.keyboardShortcuts.quickSearch": "快速搜尋",
|
||||
"com.affine.keyboardShortcuts.redo": "重做",
|
||||
"com.affine.keyboardShortcuts.reduceIndent": "減少縮進",
|
||||
"com.affine.keyboardShortcuts.select": "選擇",
|
||||
"com.affine.keyboardShortcuts.selectAll": "全選",
|
||||
"com.affine.keyboardShortcuts.shape": "圖形",
|
||||
"com.affine.keyboardShortcuts.straightConnector": "直線連接",
|
||||
"com.affine.keyboardShortcuts.strikethrough": "刪除線",
|
||||
"com.affine.keyboardShortcuts.subtitle": "快速睇返快捷鍵",
|
||||
"com.affine.keyboardShortcuts.switch": "開閂掣",
|
||||
"com.affine.keyboardShortcuts.text": "文本",
|
||||
"com.affine.keyboardShortcuts.title": "鍵盤快捷鍵",
|
||||
"com.affine.keyboardShortcuts.underline": "下劃線",
|
||||
"com.affine.keyboardShortcuts.undo": "撤銷",
|
||||
"com.affine.keyboardShortcuts.unGroup": "取消分組",
|
||||
"com.affine.keyboardShortcuts.zoomIn": "放大",
|
||||
"com.affine.keyboardShortcuts.zoomOut": "縮小",
|
||||
"com.affine.keyboardShortcuts.zoomTo100": "縮放至 100%",
|
||||
"com.affine.keyboardShortcuts.zoomToFit": "縮放至適當尺寸",
|
||||
"com.affine.last30Days": "最近 30 天",
|
||||
"com.affine.last7Days": "最近 7 天",
|
||||
"com.affine.lastMonth": "上個月",
|
||||
"com.affine.lastWeek": "上個星期",
|
||||
"com.affine.lastYear": "去年",
|
||||
"com.affine.moveToTrash.confirmModal.description": " {{title}} 將被移至廢紙簍",
|
||||
"com.affine.moveToTrash.confirmModal.title": "確認刪除頁面?",
|
||||
"com.affine.moveToTrash.title": "移至廢紙簍",
|
||||
"com.affine.nameWorkspace.button.cancel": "取消",
|
||||
"com.affine.nameWorkspace.button.create": "建立",
|
||||
"com.affine.nameWorkspace.description": "Workspace 是您的虛擬空間,無論對於個人或是團隊,均可用於引用、創建與規劃。",
|
||||
"com.affine.nameWorkspace.placeholder": "為 Workspace 命名",
|
||||
"com.affine.nameWorkspace.title": "為 Workspace 命名",
|
||||
"com.affine.new_edgeless": "新的無界頁面",
|
||||
"com.affine.new_import": "匯入",
|
||||
"com.affine.notFoundPage.backButton": "回到主頁",
|
||||
"com.affine.notFoundPage.title": "404 - 搵唔到搜尋的網頁",
|
||||
"com.affine.onboarding.title1": "超合併白板和文檔",
|
||||
"com.affine.onboarding.title2": "直觀而強大的基於塊的編輯",
|
||||
"com.affine.onboarding.videoDescription1": "在頁面模式(用於結構化文檔創建)和白板模式(用於自由形式直觀地表達創意)之間輕鬆切換。",
|
||||
"com.affine.onboarding.videoDescription2": "使用模組化介面拖放文本、圖像和其他內容塊,輕鬆創建結構化文檔。",
|
||||
"com.affine.openPageOperation.newTab": "在新標籤頁中打開",
|
||||
"com.affine.pageMode.all": "全部",
|
||||
"com.affine.pageMode.edgeless": "無界",
|
||||
"com.affine.pageMode.page": "頁面",
|
||||
"com.affine.publicLinkDisableModal.button.cancel": "取消",
|
||||
"com.affine.publicLinkDisableModal.button.disable": "停用",
|
||||
"com.affine.publicLinkDisableModal.description": "停用此公開連結,將阻止擁有連結者登入此頁面。",
|
||||
"com.affine.publicLinkDisableModal.title": "確認停用公開連結?",
|
||||
"com.affine.rootAppSidebar.collections": "收藏集",
|
||||
"com.affine.rootAppSidebar.favorites": "我的收藏",
|
||||
"com.affine.rootAppSidebar.others": "其他",
|
||||
"com.affine.setDBLocation.button.customize": "定製",
|
||||
"com.affine.setDBLocation.button.defaultLocation": "預設位置",
|
||||
"com.affine.setDBLocation.description": "選擇欲創建 Workspace 之位置。預設下,Workspace 數據存儲在本機。",
|
||||
"com.affine.setDBLocation.title": "設定資料庫位置",
|
||||
"com.affine.setDBLocation.tooltip.defaultLocation": "預設下将存儲到 {{location}}",
|
||||
"com.affine.setSyncingMode.button.continue": "繼續",
|
||||
"com.affine.setSyncingMode.cloud": "使用 AFFiNE Cloud 跨設備同步",
|
||||
"com.affine.setSyncingMode.deviceOnly": "僅在本機使用",
|
||||
"com.affine.setSyncingMode.title.added": "匯入成功",
|
||||
"com.affine.setSyncingMode.title.created": "建立成功",
|
||||
"com.affine.settings.appearance": "外觀",
|
||||
"com.affine.settings.auto-check-description": "若啟用,將定期自動檢測新版本。",
|
||||
"com.affine.settings.auto-download-description": "若啟用,將自動下載新版本。",
|
||||
"com.affine.settings.member-tooltip": "啟用 AFFiNE Cloud 以與他人協作",
|
||||
"com.affine.settings.remove-workspace": "刪除 Workspace",
|
||||
"com.affine.settings.storage.db-location.change-hint": "點按以更改儲存位置。",
|
||||
"com.affine.settings.storage.description": "檢查或更改存儲位置",
|
||||
"com.affine.settings.storage.description-alt": "檢查或更改存儲位置。按下路徑以編輯。",
|
||||
"com.affine.settings.suggestion": "需要更多定製選項?您可以在社區中提意見。",
|
||||
"com.affine.settings.workspace.description": "您可在此自訂您的 Workspace",
|
||||
"com.affine.settings.workspace.not-owner": "只有擁有者才能編輯 Workspace 頭像與名稱。 更改將向所有人顯示。",
|
||||
"com.affine.settings.workspace.publish-tooltip": "啟用 AFFiNE Cloud 以發布此 Workspace",
|
||||
"com.affine.settings.workspace.storage.tip": "點按以更改儲存位置。",
|
||||
"com.affine.settingSidebar.settings.general": "一般",
|
||||
"com.affine.settingSidebar.settings.workspace": "Workspace",
|
||||
"com.affine.settingSidebar.title": "設置",
|
||||
"com.affine.shortcutsTitle.edgeless": "無界",
|
||||
"com.affine.shortcutsTitle.general": "一般",
|
||||
"com.affine.shortcutsTitle.markdownSyntax": "Markdown 語法",
|
||||
"com.affine.shortcutsTitle.page": "頁面",
|
||||
"com.affine.sidebarSwitch.collapse": "收起側欄",
|
||||
"com.affine.sidebarSwitch.expand": "展開側欄",
|
||||
"com.affine.themeSettings.dark": "深色",
|
||||
"com.affine.themeSettings.light": "淺色",
|
||||
"com.affine.themeSettings.system": "跟隨系統",
|
||||
"com.affine.toastMessage.addedFavorites": "已收藏",
|
||||
"com.affine.toastMessage.edgelessMode": "無界模式",
|
||||
"com.affine.toastMessage.movedTrash": "已移至廢紙簍",
|
||||
"com.affine.toastMessage.pageMode": "頁面模式",
|
||||
"com.affine.toastMessage.permanentlyDeleted": "已永久刪除",
|
||||
"com.affine.toastMessage.removedFavorites": "已從我的收藏中刪除",
|
||||
"com.affine.toastMessage.restored": "{{title}} 已恢復",
|
||||
"com.affine.toastMessage.successfullyDeleted": "已成功刪除",
|
||||
"com.affine.today": "今天",
|
||||
"com.affine.trashOperation.delete": "刪除",
|
||||
"com.affine.trashOperation.delete.description": "刪除後,您將無法撤消此操作。您確認嗎?",
|
||||
"com.affine.trashOperation.delete.title": "永久刪除",
|
||||
"com.affine.trashOperation.deletePermanently": "永久刪除",
|
||||
"com.affine.trashOperation.restoreIt": "恢復它",
|
||||
"com.affine.workspace.cannot-delete": "您不能刪除僅剩的 Workspace",
|
||||
"com.affine.workspaceDelete.button.cancel": "取消",
|
||||
"com.affine.workspaceDelete.button.delete": "刪除",
|
||||
"com.affine.workspaceDelete.description": "刪除 <1>{{workspace}}</1> ,此步驟無法重做,全部內容將丟失。",
|
||||
"com.affine.workspaceDelete.description2": "刪除<1>{{workspace}}</1> ,將同時刪除本機同雲端資料。此步驟無法重做,請慎重考慮。",
|
||||
"com.affine.workspaceDelete.placeholder": "請鍵入 Workspace 名稱以確認",
|
||||
"com.affine.workspaceDelete.title": "刪除 Workspace",
|
||||
"com.affine.workspaceLeave.button.cancel": "取消",
|
||||
"com.affine.workspaceLeave.button.leave": "離開",
|
||||
"com.affine.workspaceLeave.description": "離開後,您將無法再訪問此 Workspace 的內容。",
|
||||
"com.affine.workspaceSubPath.all": "所有頁面",
|
||||
"com.affine.workspaceSubPath.trash": "廢紙簍",
|
||||
"com.affine.workspaceType.cloud": "\nCloud Workspace",
|
||||
"com.affine.workspaceType.joined": "加入的 Workspace",
|
||||
"com.affine.workspaceType.local": "本機 Workspace",
|
||||
"com.affine.workspaceType.offline": "離線時可用",
|
||||
"com.affine.write_with_a_blank_page": "在空白頁書寫",
|
||||
"com.affine.yesterday": "昨天",
|
||||
"Confirm": "確認",
|
||||
"Connector": "連接",
|
||||
"Continue with Google": "以 Google 登入",
|
||||
"Convert to ": "轉換為",
|
||||
"Copied link to clipboard": "複製連結到剪貼簿",
|
||||
"Copy": "複製",
|
||||
"Copy Link": "複製連結",
|
||||
"core": "核心",
|
||||
"Create": "建立",
|
||||
"Create Or Import": "建立或匯入",
|
||||
"Create Shared Link Description": "建立一個可共享連結。",
|
||||
"Create your own workspace": "建立你的 workspace",
|
||||
"Created": "建立時間",
|
||||
"Created with": "建立於",
|
||||
"Data sync mode": "數據同步模式",
|
||||
"DB_FILE_ALREADY_LOADED": "數據庫已載入",
|
||||
"DB_FILE_INVALID": "無效數據庫文檔",
|
||||
"DB_FILE_MIGRATION_FAILED": "數據庫併入失敗",
|
||||
"DB_FILE_PATH_INVALID": "數據庫路徑無效",
|
||||
"Delete": "刪除",
|
||||
"Delete Member?": "刪除成員?",
|
||||
"Delete Workspace Label Hint": "刪除此 Workspace 後,所有內容將永久清除,任何人都無法恢復。",
|
||||
"Delete Workspace placeholder": "鍵入 “Delete” 以確認",
|
||||
"Disable": "停用",
|
||||
"Disable Public Link": "停用公開連結",
|
||||
"Disable Public Sharing": "停用公開分享",
|
||||
"Download all data": "下載全部數據",
|
||||
"Download core data": "下載核心數據",
|
||||
"Download data": "下載 {{CoreOrAll}} 數據",
|
||||
"Download data Description1": "這將佔用更多存儲空間。",
|
||||
"Download data Description2": "這只佔用較小存儲空間。",
|
||||
"Edgeless": "無界",
|
||||
"Edit": "編輯",
|
||||
"Edit Filter": "編輯篩選器",
|
||||
"emptyAllPages": "點擊<1>$t(New Page)</1>按鈕創建您的第一個頁面。",
|
||||
"emptyAllPagesClient": "點擊<1>$t(New Page)</1>或按下<3>{{shortcut}}</3>按鈕創建您的第一個頁面。",
|
||||
"emptyFavorite": "按下添加到我的收藏,頁面將顯示在此處。",
|
||||
"emptySharedPages": "共用頁面將顯示在此處。",
|
||||
"emptyTrash": "按下添加到廢紙簍,頁面將顯示在此處。",
|
||||
"Enable": "啟用",
|
||||
"Enable AFFiNE Cloud": "啟用 AFFiNE Cloud",
|
||||
"Enable AFFiNE Cloud Description": "啓用後 Workspace 數據將透過 AFFiNE Cloud 備份及同步。",
|
||||
"Enable cloud hint": "以下功能依賴於 AFFiNE Cloud。 所有數據都存儲在當前設備上。 您可以為此 Workspace 啓用 AFFiNE Cloud,以保持數據與雲同步。",
|
||||
"Enabled success": "啟用成功",
|
||||
"Exclude from filter": "從篩選器中排除",
|
||||
"Export": "匯出",
|
||||
"Export AFFiNE backup file": "匯出 AFFiNE 備份檔",
|
||||
"Export Description": "您可以匯出整個 Workspace 數據進行備份,匯出的數據亦可重新匯入。",
|
||||
"Export Shared Pages Description": "下載此頁的靜態副本以與他人共享。",
|
||||
"Export success": "匯出成功",
|
||||
"Export to HTML": "匯出為 HTML",
|
||||
"Export to Markdown": "匯出為 Markdown",
|
||||
"Export to PDF": "匯出為 PDF",
|
||||
"Export to PNG": "匯出為 PNG",
|
||||
"Export Workspace": "匯出 Workspace <1>{{workspace}}</1> 即將推出",
|
||||
"Failed to publish workspace": "Workspace 發佈失敗",
|
||||
"Favorite": "收藏",
|
||||
"Favorite pages for easy access": "收藏頁面以便訪問",
|
||||
"Favorited": "已收藏",
|
||||
"FILE_ALREADY_EXISTS": "檔已存在",
|
||||
"Find 0 result": "發現 0 個結果",
|
||||
"Find results": "發現 {{number}} 個結果",
|
||||
"Force Sign Out": "強制登出",
|
||||
"Get in touch!": "聯絡我哋!",
|
||||
"Get in touch! Join our communities": "聯絡我哋!加入我們的社群。",
|
||||
"Get in touch! Join our communities.": "聯絡我哋!加入我們的社群。",
|
||||
"Got it": "明白了",
|
||||
"How is AFFiNE Alpha different?": "AFFiNE Alpha 有何不同?",
|
||||
"Import": "匯入",
|
||||
"Info": "資訊",
|
||||
"Invite": "邀請",
|
||||
"Invite Members": "邀請成員",
|
||||
"Invite placeholder": "搜尋郵件(只支援 Gmail)",
|
||||
"is a Cloud Workspace": "是一個 Cloud Workspace。",
|
||||
"is a Local Workspace": "是本機 Workspace。",
|
||||
"It takes up little space on your device": "這只佔用較小存儲空間。",
|
||||
"It takes up little space on your device.": "這只佔用較小存儲空間。",
|
||||
"It takes up more space on your device": "這將佔用更多存儲空間。",
|
||||
"It takes up more space on your device.": "這將佔用更多存儲空間。",
|
||||
"Jump to": "跳轉到",
|
||||
"Loading": "載入中⋯⋯",
|
||||
"Local Workspace Description": "所有數據都存儲在當前設備上。 您可以為此 Workspace 啓用 AFFiNE Cloud,以保持數據與雲同步。",
|
||||
"login success": "登入成功",
|
||||
"Member": "成員",
|
||||
"Member has been removed": "{{name}} 已被移除。",
|
||||
"Members": "成員",
|
||||
"Members hint": "在這裡管理成員,透過電子郵件邀請新成員。",
|
||||
"mobile device": "看起來您正在手提電話上流覽。",
|
||||
"mobile device description": "我們仍在適配手提電話,現階段建議您使用電腦。",
|
||||
"Move folder": "移動資料夾",
|
||||
"Move folder hint": "選取新的檔案位置",
|
||||
"Move folder success": "移動資料夾成功",
|
||||
"Move page to": "將頁面移動到⋯⋯",
|
||||
"Move page to...": "將頁面移動到⋯⋯",
|
||||
"Move to": "移至",
|
||||
"Moved to Trash": "已移至廢紙簍",
|
||||
"My Workspaces": "我的 Workspace",
|
||||
"Navigation Path": "導航路徑",
|
||||
"New Keyword Page": "新建 “{{query}}” 頁面",
|
||||
"New Page": "新頁面",
|
||||
"New Workspace": "新建 Workspace",
|
||||
"No item": "無項目",
|
||||
"Non-Gmail": "不支援非 Gmail",
|
||||
"None yet": "暫未",
|
||||
"Not now": "稍後",
|
||||
"Open folder": "打開資料夾",
|
||||
"Open folder hint": "檢查存儲資料夾的位置。",
|
||||
"Open Workspace Settings": "打開 Workspace 設定",
|
||||
"Organize pages to build knowledge": "整理頁面以構建知識庫",
|
||||
"Owner": "擁有者",
|
||||
"Paper": "文檔",
|
||||
"Pending": "待定",
|
||||
"Pivots": "樞紐",
|
||||
"Please make sure you are online": "請確保您在線",
|
||||
"Publish": "發佈",
|
||||
"Publish to web": "發佈到網絡",
|
||||
"Published Description": "此 Workspace 已發佈到網絡,所有人均可透過連結查看內容。",
|
||||
"Published hint": "訪問者可透過提供的連結查看內容。",
|
||||
"Published to Web": "已發佈到網絡",
|
||||
"Publishing": "發佈到網絡需要 AFFiNE Cloud 服務。",
|
||||
"Publishing Description": "發佈到網絡後,所有人均可透過連結查看內容。",
|
||||
"Quick search": "快速搜尋",
|
||||
"Quick search placeholder": "快速搜尋⋯⋯",
|
||||
"Quick search placeholder2": "在 {{workspace}} 中搜尋",
|
||||
"Recent": "最近",
|
||||
"recommendBrowser": "我們建議使用 <1>Chrome</1> 瀏覽器以獲得最佳體驗。",
|
||||
"Remove from Pivots": "從樞紐中刪除",
|
||||
"Remove from workspace": "從 Workspace 中刪除",
|
||||
"Remove special filter": "移除特殊篩選器",
|
||||
"Rename": "重新命名",
|
||||
"Restart Install Client Update": "重啟以安裝更新",
|
||||
"Retain cached cloud data": "保留緩衝的雲數據",
|
||||
"Retain local cached data": "保留本機緩衝數據",
|
||||
"RFP": "頁面可在樞紐中自由添加或刪除,但仍可從「所有頁面」訪問。",
|
||||
"Saved then enable AFFiNE Cloud": "所有修訂已儲存在本機,點按以啟用 AFFiNE Cloud。",
|
||||
"Set up an AFFiNE account to sync data": "設定 AFFiNE 帳戶以同步數據",
|
||||
"Share Menu Public Workspace Description1": "邀請他人加入 Workshop 或將其發佈到網絡。",
|
||||
"Share Menu Public Workspace Description2": "當前 Workspace 已作為公共 Workspace 發佈到網絡。",
|
||||
"Share with link": "透過連結分享",
|
||||
"Shared Pages": "已分享頁面",
|
||||
"Shared Pages Description": "公開分享頁面需要 AFFiNE Cloud 服務。",
|
||||
"Shared Pages In Public Workspace Description": "整個 Workspace 已在網絡發布,可透過<1> Workspace 設置</1>進行編輯。",
|
||||
"Shortcuts": "快速鍵",
|
||||
"Sign in": "登入 AFFiNE Cloud",
|
||||
"Sign in and Enable": "登入並啟用",
|
||||
"Sign out": "登出",
|
||||
"Sign out description": "登出將使未同步內容丟失。",
|
||||
"Skip": "略過",
|
||||
"Stay logged out": "保持登出狀態",
|
||||
"Sticky": "Memo紙",
|
||||
"still designed": "(此頁面仍在設計中。 )",
|
||||
"Stop publishing": "中止發佈",
|
||||
"Storage": "儲存",
|
||||
"Storage and Export": "存儲和匯出",
|
||||
"Storage Folder": "存儲資料夾",
|
||||
"Sync": "同步",
|
||||
"Synced with AFFiNE Cloud": "AFFiNE Cloud 同步完成",
|
||||
"Tags": "標籤",
|
||||
"Title": "標題",
|
||||
"UNKNOWN_ERROR": "未知錯誤",
|
||||
"Unpin": "取消固定",
|
||||
"Unpublished hint": "發布到網絡後,訪問者可透過提供的連結查看內容。",
|
||||
"Untitled": "未命名",
|
||||
"Update Available": "更新可用",
|
||||
"Update workspace name success": "成功更新 Workspace 名稱",
|
||||
"Updated": "更新時間",
|
||||
"upgradeBrowser": "更新至最新版本 Chrome,以享有更優質的使用體驗。",
|
||||
"Upload": "上傳",
|
||||
"Users": "使用者",
|
||||
"View Navigation Path": "查看導航路徑",
|
||||
"Wait for Sync": "等待同步",
|
||||
"will delete member": "將刪除成員",
|
||||
"Workspace Avatar": "Workspace 頭像",
|
||||
"Workspace Icon": "Workspace 圖示",
|
||||
"Workspace Name": "Workspace 名稱",
|
||||
"Workspace Not Found": "未找到 Workspace",
|
||||
"Workspace Owner": "Workspace 擁有者",
|
||||
"Workspace Profile": "Workspace 配置檔",
|
||||
"Workspace saved locally": "{{name}} 已保存在本機",
|
||||
"Workspace Settings": "Workspace 設定",
|
||||
"Workspace Settings with name": "{{name}} 的設定",
|
||||
"Workspace Type": "Workspace 類型",
|
||||
"You cannot delete the last workspace": "您不能刪除僅剩的 Workspace"
|
||||
}
|
||||
210
packages/frontend/i18n/src/scripts/api.ts
Normal file
210
packages/frontend/i18n/src/scripts/api.ts
Normal file
@@ -0,0 +1,210 @@
|
||||
// cSpell:ignore Tolgee
|
||||
import { fetchTolgee } from './request.js';
|
||||
|
||||
/**
|
||||
* Returns all project languages
|
||||
*
|
||||
* See https://tolgee.io/api#operation/getAll_6
|
||||
* @example
|
||||
* ```ts
|
||||
* const languages = [
|
||||
* {
|
||||
* id: 1000016008,
|
||||
* name: 'English',
|
||||
* tag: 'en',
|
||||
* originalName: 'English',
|
||||
* flagEmoji: '🇬🇧',
|
||||
* base: true
|
||||
* },
|
||||
* {
|
||||
* id: 1000016013,
|
||||
* name: 'Spanish',
|
||||
* tag: 'es',
|
||||
* originalName: 'español',
|
||||
* flagEmoji: '🇪🇸',
|
||||
* base: false
|
||||
* },
|
||||
* {
|
||||
* id: 1000016009,
|
||||
* name: 'Simplified Chinese',
|
||||
* tag: 'zh-Hans',
|
||||
* originalName: '简体中文',
|
||||
* flagEmoji: '🇨🇳',
|
||||
* base: false
|
||||
* },
|
||||
* {
|
||||
* id: 1000016012,
|
||||
* name: 'Traditional Chinese',
|
||||
* tag: 'zh-Hant',
|
||||
* originalName: '繁體中文',
|
||||
* flagEmoji: '🇭🇰',
|
||||
* base: false
|
||||
* }
|
||||
* ]
|
||||
* ```
|
||||
*/
|
||||
|
||||
export const getAllProjectLanguages = async (
|
||||
size = 1000
|
||||
): Promise<
|
||||
{
|
||||
id: number;
|
||||
name: string;
|
||||
tag: string;
|
||||
originalName: string;
|
||||
flagEmoji: string;
|
||||
base: boolean;
|
||||
}[]
|
||||
> => {
|
||||
const url = `/languages?size=${size}`;
|
||||
const resp = await fetchTolgee(url);
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
const json: {
|
||||
_embedded: {
|
||||
languages: {
|
||||
id: number;
|
||||
name: string;
|
||||
tag: string;
|
||||
originalName: string;
|
||||
flagEmoji: string;
|
||||
base: boolean;
|
||||
}[];
|
||||
};
|
||||
page: unknown;
|
||||
} = await resp.json();
|
||||
return json._embedded.languages;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns translations in project
|
||||
*
|
||||
* See https://tolgee.io/api#operation/getTranslations_
|
||||
*/
|
||||
export const getTranslations = async (): Promise<unknown> => {
|
||||
const url = '/translations';
|
||||
const resp = await fetchTolgee(url);
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
const json = await resp.json();
|
||||
return json;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all translations for specified languages
|
||||
*
|
||||
* See https://tolgee.io/api#operation/getAllTranslations_1
|
||||
*/
|
||||
export const getLanguagesTranslations = async <T extends string>(
|
||||
languages: T
|
||||
): Promise<{ [key in T]?: Record<string, string> }> => {
|
||||
const url = `/translations/${languages}`;
|
||||
const resp = await fetchTolgee(url);
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
const json = await resp.json();
|
||||
return json;
|
||||
};
|
||||
|
||||
export const getRemoteTranslations = async (
|
||||
languages: string
|
||||
): Promise<Record<string, string>> => {
|
||||
const translations = await getLanguagesTranslations(languages);
|
||||
if (!(languages in translations)) {
|
||||
return {};
|
||||
}
|
||||
// The assert is safe because we checked above
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
return translations[languages]!;
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates new key
|
||||
*
|
||||
* See https://tolgee.io/api#operation/create_2
|
||||
*/
|
||||
export const createsNewKey = async (
|
||||
key: string,
|
||||
translations: Record<string, string>
|
||||
): Promise<unknown> => {
|
||||
const url = '/translations/keys/create';
|
||||
const resp = await fetchTolgee(url, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ name: key, translations }),
|
||||
});
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
/**
|
||||
* There are some problems in the i18n backend,
|
||||
* which is used to temporarily solve the ci error.
|
||||
*/
|
||||
console.warn(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
return;
|
||||
}
|
||||
const json = await resp.json();
|
||||
return json;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tags a key with tag. If tag with provided name doesn't exist, it is created
|
||||
*
|
||||
* See https://tolgee.io/api#operation/tagKey_1
|
||||
*/
|
||||
export const addTag = async (
|
||||
keyId: string,
|
||||
tagName: string
|
||||
): Promise<unknown> => {
|
||||
const url = `/keys/${keyId}/tags`;
|
||||
const resp = await fetchTolgee(url, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify({ name: tagName }),
|
||||
});
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
const json = await resp.json();
|
||||
return json;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tags a key with tag. If tag with provided name doesn't exist, it is created
|
||||
*
|
||||
* See https://tolgee.io/api#operation/tagKey_1
|
||||
*/
|
||||
export const removeTag = async (
|
||||
keyId: string,
|
||||
tagId: number
|
||||
): Promise<unknown> => {
|
||||
const url = `/keys/${keyId}/tags/${tagId}`;
|
||||
const resp = await fetchTolgee(url, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
const json = await resp.json();
|
||||
return json;
|
||||
};
|
||||
|
||||
// export const addTagByKey = async (key: string, tag: string) => {
|
||||
// // TODO get key id by key name
|
||||
// // const keyId =
|
||||
// // addTag(keyId, tag);
|
||||
// };
|
||||
|
||||
/**
|
||||
* Exports data
|
||||
*
|
||||
* See https://tolgee.io/api#operation/export_1
|
||||
*/
|
||||
export const exportResources = async (): Promise<Response> => {
|
||||
const url = `/export`;
|
||||
const resp = await fetchTolgee(url);
|
||||
|
||||
if (resp.status < 200 || resp.status >= 300) {
|
||||
throw new Error(url + ' ' + resp.status + '\n' + (await resp.text()));
|
||||
}
|
||||
return resp;
|
||||
};
|
||||
154
packages/frontend/i18n/src/scripts/download.ts
Normal file
154
packages/frontend/i18n/src/scripts/download.ts
Normal file
@@ -0,0 +1,154 @@
|
||||
// cSpell:ignore Tolgee
|
||||
import * as fs from 'node:fs/promises';
|
||||
import * as path from 'node:path';
|
||||
|
||||
import { format } from 'prettier';
|
||||
|
||||
import { getAllProjectLanguages, getRemoteTranslations } from './api.js';
|
||||
import { flattenTranslation, type TranslationRes } from './utils.js';
|
||||
|
||||
const INDENT = 2;
|
||||
const RES_DIR = path.resolve(process.cwd(), 'src', 'resources');
|
||||
|
||||
const countKeys = (obj: TranslationRes | null) => {
|
||||
if (!obj) {
|
||||
return 0;
|
||||
}
|
||||
let count = 0;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
Object.entries(obj).forEach(([_, value]) => {
|
||||
if (typeof value === 'string') {
|
||||
count++;
|
||||
} else {
|
||||
count += countKeys(value);
|
||||
}
|
||||
});
|
||||
return count;
|
||||
};
|
||||
|
||||
const getBaseTranslations = async (baseLanguage: { tag: string }) => {
|
||||
try {
|
||||
const baseTranslationsStr = await fs.readFile(
|
||||
path.resolve(RES_DIR, `${baseLanguage.tag}.json`),
|
||||
{ encoding: 'utf8' }
|
||||
);
|
||||
const baseTranslations = JSON.parse(baseTranslationsStr);
|
||||
return baseTranslations;
|
||||
} catch (e) {
|
||||
console.error('base language:', JSON.stringify(baseLanguage));
|
||||
console.error('Failed to read base language', e);
|
||||
const translations = await getRemoteTranslations(baseLanguage.tag);
|
||||
await fs.writeFile(
|
||||
path.resolve(RES_DIR, `${baseLanguage.tag}.json`),
|
||||
JSON.stringify(translations, null, 4)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const main = async () => {
|
||||
try {
|
||||
await fs.access(RES_DIR);
|
||||
} catch (error) {
|
||||
fs.mkdir(RES_DIR).catch(console.error);
|
||||
console.log('Create directory', RES_DIR);
|
||||
}
|
||||
console.log('Loading project languages...');
|
||||
const languages = await getAllProjectLanguages();
|
||||
const baseLanguage = languages.find(language => language.base);
|
||||
if (!baseLanguage) {
|
||||
console.error(JSON.stringify(languages));
|
||||
throw new Error('Could not find base language');
|
||||
}
|
||||
console.log(`Loading ${baseLanguage.tag} languages translations as base...`);
|
||||
|
||||
const baseTranslations = await getBaseTranslations(baseLanguage);
|
||||
const baseKeyNum = countKeys(baseTranslations);
|
||||
const languagesWithTranslations = await Promise.all(
|
||||
languages.map(async language => {
|
||||
console.log(`Loading ${language.tag} translations...`);
|
||||
const translations = await getRemoteTranslations(language.tag);
|
||||
const keyNum = countKeys(translations);
|
||||
const completeRate = Number((keyNum / baseKeyNum).toFixed(3));
|
||||
console.log(
|
||||
`Load ${language.name} ${
|
||||
completeRate * 100
|
||||
}, %(${keyNum}/${baseKeyNum}) complete`
|
||||
);
|
||||
|
||||
return {
|
||||
...language,
|
||||
translations,
|
||||
completeRate,
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
const availableLanguages = languagesWithTranslations.filter(
|
||||
language => language.completeRate > 0.4
|
||||
);
|
||||
|
||||
for (const language of availableLanguages
|
||||
// skip base language
|
||||
.filter(i => !i.base)) {
|
||||
await fs.writeFile(
|
||||
path.resolve(RES_DIR, `${language.tag}.json`),
|
||||
JSON.stringify(
|
||||
{
|
||||
'// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.':
|
||||
'',
|
||||
...flattenTranslation(language.translations),
|
||||
},
|
||||
null,
|
||||
INDENT
|
||||
) + '\n'
|
||||
);
|
||||
}
|
||||
|
||||
console.log('Generating meta data...');
|
||||
const code = `// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
// Run \`yarn run download-resources\` to regenerate.
|
||||
// If you need to update the code, please edit \`i18n/src/scripts/download.ts\` inside your project.
|
||||
${availableLanguages
|
||||
.map(
|
||||
language =>
|
||||
`import ${language.tag.replaceAll('-', '_')} from './${
|
||||
language.tag
|
||||
}.json'`
|
||||
)
|
||||
.sort()
|
||||
.join('\n')}
|
||||
|
||||
export const LOCALES = [
|
||||
${availableLanguages
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- omit key
|
||||
.map(({ translations, ...language }) =>
|
||||
JSON.stringify({
|
||||
...language,
|
||||
// a trick to generate a string without quotation marks
|
||||
res: '__RES_PLACEHOLDER',
|
||||
}).replace(
|
||||
'"__RES_PLACEHOLDER"',
|
||||
language.tag.replaceAll('-', '_')
|
||||
)
|
||||
)
|
||||
.join(',\n')}
|
||||
] as const;
|
||||
`;
|
||||
|
||||
await fs.writeFile(
|
||||
path.resolve(RES_DIR, 'index.ts'),
|
||||
await format(code, {
|
||||
parser: 'typescript',
|
||||
singleQuote: true,
|
||||
trailingComma: 'es5',
|
||||
tabWidth: INDENT,
|
||||
arrowParens: 'avoid',
|
||||
})
|
||||
);
|
||||
console.log('Done');
|
||||
};
|
||||
|
||||
main().catch(e => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
});
|
||||
55
packages/frontend/i18n/src/scripts/request.ts
Normal file
55
packages/frontend/i18n/src/scripts/request.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
// cSpell:ignore Tolgee
|
||||
const TOLGEE_API_KEY = process.env['TOLGEE_API_KEY'];
|
||||
const TOLGEE_API_URL = 'https://i18n.affine.pro';
|
||||
|
||||
if (!TOLGEE_API_KEY) {
|
||||
throw new Error(`Please set "TOLGEE_API_KEY" as environment variable!`);
|
||||
}
|
||||
|
||||
const withTolgee = (
|
||||
fetch: typeof globalThis.fetch
|
||||
): typeof globalThis.fetch => {
|
||||
const baseUrl = `${TOLGEE_API_URL}/v2/projects`;
|
||||
const headers = new Headers({
|
||||
'X-API-Key': TOLGEE_API_KEY,
|
||||
'Content-Type': 'application/json',
|
||||
});
|
||||
|
||||
const isRequest = (input: RequestInfo | URL): input is Request => {
|
||||
return typeof input === 'object' && !('href' in input);
|
||||
};
|
||||
|
||||
return new Proxy(fetch, {
|
||||
apply(
|
||||
target,
|
||||
thisArg: unknown,
|
||||
argArray: Parameters<typeof globalThis.fetch>
|
||||
) {
|
||||
if (isRequest(argArray[0])) {
|
||||
// Request
|
||||
if (!argArray[0].headers) {
|
||||
argArray[0] = {
|
||||
...argArray[0],
|
||||
url: `${baseUrl}${argArray[0].url}`,
|
||||
headers,
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// URL or URLLike + ?RequestInit
|
||||
if (typeof argArray[0] === 'string') {
|
||||
argArray[0] = `${baseUrl}${argArray[0]}`;
|
||||
}
|
||||
if (!argArray[1]) {
|
||||
argArray[1] = {};
|
||||
}
|
||||
if (!argArray[1].headers) {
|
||||
argArray[1].headers = headers;
|
||||
}
|
||||
}
|
||||
// console.log('fetch', argArray);
|
||||
return target.apply(thisArg, argArray);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const fetchTolgee = withTolgee(globalThis.fetch);
|
||||
153
packages/frontend/i18n/src/scripts/sync.ts
Normal file
153
packages/frontend/i18n/src/scripts/sync.ts
Normal file
@@ -0,0 +1,153 @@
|
||||
// cSpell:ignore Tolgee
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { resolve } from 'node:path';
|
||||
|
||||
import { createsNewKey, getRemoteTranslations } from './api.js';
|
||||
import type { TranslationRes } from './utils.js';
|
||||
|
||||
const BASE_JSON_PATH = resolve(process.cwd(), 'src', 'resources', 'en.json');
|
||||
const BASE_LANGUAGES = 'en' as const;
|
||||
|
||||
/**
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* flatRes({ a: { b: 'c' } }); // { 'a.b': 'c' }
|
||||
* ```
|
||||
*/
|
||||
const flatRes = (obj: TranslationRes) => {
|
||||
const getEntries = (o: TranslationRes, prefix = ''): [string, string][] =>
|
||||
Object.entries(o).flatMap<[string, string]>(([k, v]) =>
|
||||
typeof v !== 'string'
|
||||
? getEntries(v, `${prefix}${k}.`)
|
||||
: [[`${prefix}${k}`, v]]
|
||||
);
|
||||
return Object.fromEntries(getEntries(obj));
|
||||
};
|
||||
|
||||
const differenceObject = (
|
||||
newObj: Record<string, string>,
|
||||
oldObj: Record<string, string>
|
||||
) => {
|
||||
const add: string[] = [];
|
||||
const remove: string[] = [];
|
||||
const modify: string[] = [];
|
||||
const both: string[] = [];
|
||||
|
||||
Object.keys(newObj).forEach(key => {
|
||||
if (!(key in oldObj)) {
|
||||
add.push(key);
|
||||
} else {
|
||||
both.push(key);
|
||||
}
|
||||
});
|
||||
|
||||
Object.keys(oldObj).forEach(key => {
|
||||
if (!(key in newObj)) {
|
||||
remove.push(key);
|
||||
}
|
||||
});
|
||||
|
||||
both.forEach(key => {
|
||||
if (!(key in newObj) || !(key in oldObj)) {
|
||||
throw new Error('Unreachable');
|
||||
}
|
||||
const newVal = newObj[key];
|
||||
const oldVal = oldObj[key];
|
||||
if (newVal !== oldVal) {
|
||||
modify.push(key);
|
||||
}
|
||||
});
|
||||
return { add, remove, modify };
|
||||
};
|
||||
|
||||
function warnDiff(diff: { add: string[]; remove: string[]; modify: string[] }) {
|
||||
if (diff.add.length) {
|
||||
console.log('New keys found:', diff.add.join(', '));
|
||||
//See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-a-notice-message
|
||||
process.env['CI'] &&
|
||||
console.log(
|
||||
`::notice file=${BASE_JSON_PATH},line=1,title=New keys::${diff.add.join(
|
||||
', '
|
||||
)}`
|
||||
);
|
||||
}
|
||||
if (diff.remove.length) {
|
||||
console.warn('[WARN]', 'Unused keys found:', diff.remove.join(', '));
|
||||
process.env['CI'] &&
|
||||
console.warn(
|
||||
`::notice file=${BASE_JSON_PATH},line=1,title=Unused keys::${diff.remove.join(
|
||||
', '
|
||||
)}`
|
||||
);
|
||||
}
|
||||
if (diff.modify.length) {
|
||||
console.warn('[WARN]', 'Inconsistent keys found:', diff.modify.join(', '));
|
||||
process.env['CI'] &&
|
||||
console.warn(
|
||||
`::warning file=${BASE_JSON_PATH},line=1,title=Inconsistent keys::${diff.modify.join(
|
||||
', '
|
||||
)}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const main = async () => {
|
||||
console.log('Loading local base translations...');
|
||||
const baseLocalTranslations = JSON.parse(
|
||||
await readFile(BASE_JSON_PATH, {
|
||||
encoding: 'utf8',
|
||||
})
|
||||
);
|
||||
const flatLocalTranslations = flatRes(baseLocalTranslations);
|
||||
console.log(
|
||||
`Loading local base translations success! Total ${
|
||||
Object.keys(flatLocalTranslations).length
|
||||
} keys`
|
||||
);
|
||||
|
||||
console.log('Fetch remote base translations...');
|
||||
const baseRemoteTranslations = await getRemoteTranslations(BASE_LANGUAGES);
|
||||
const flatRemoteTranslations = flatRes(baseRemoteTranslations);
|
||||
console.log(
|
||||
`Fetch remote base translations success! Total ${
|
||||
Object.keys(flatRemoteTranslations).length
|
||||
} keys`
|
||||
);
|
||||
|
||||
const diff = differenceObject(flatLocalTranslations, flatRemoteTranslations);
|
||||
|
||||
console.log(''); // new line
|
||||
warnDiff(diff);
|
||||
console.log(''); // new line
|
||||
|
||||
if (process.argv.slice(2).includes('--check')) {
|
||||
// check mode
|
||||
return;
|
||||
}
|
||||
|
||||
for (const key of diff.add) {
|
||||
const val = flatLocalTranslations[key];
|
||||
console.log(`Creating new key: ${key} -> ${val}`);
|
||||
await createsNewKey(key, { [BASE_LANGUAGES]: val });
|
||||
}
|
||||
|
||||
// TODO remove unused tags from used keys
|
||||
|
||||
// diff.remove.forEach(key => {
|
||||
// // TODO set unused tag
|
||||
// // console.log(`Add ${DEPRECATED_TAG_NAME} to ${key}`);
|
||||
// addTagByKey(key, DEPRECATED_TAG_NAME);
|
||||
// });
|
||||
|
||||
// diff.modify.forEach(key => {
|
||||
// // TODO warn different between local and remote base translations
|
||||
// });
|
||||
|
||||
// TODO send notification
|
||||
};
|
||||
|
||||
main().catch(e => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
});
|
||||
35
packages/frontend/i18n/src/scripts/utils.ts
Normal file
35
packages/frontend/i18n/src/scripts/utils.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
export interface TranslationRes {
|
||||
[x: string]: string | TranslationRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively flattens a JSON object using dot notation.
|
||||
*
|
||||
* NOTE: input must be an object as described by JSON spec. Arbitrary
|
||||
* JS objects (e.g. {a: () => 42}) may result in unexpected output.
|
||||
* MOREOVER, it removes keys with empty objects/arrays as value (see
|
||||
* examples bellow).
|
||||
*
|
||||
* @example
|
||||
* flattenTranslation({a: 1, b: [{c: 2, d: {e: 3}}, 4]})
|
||||
* // {a: 1, b.0.c: 2, b.0.d.e: 3, b.1: 4}
|
||||
* flattenTranslation({a: 1, b: [{c: 2, d: {e: [true, false, {f: 1}]}}]})
|
||||
* // {a: 1, b.0.c: 2, b.0.d.e.0: true, b.0.d.e.1: false, b.0.d.e.2.f: 1}
|
||||
* flattenTranslation({a: 1, b: [], c: {}})
|
||||
* // {a: 1}
|
||||
*
|
||||
* @param obj item to be flattened
|
||||
*/
|
||||
export const flattenTranslation = (
|
||||
obj: string | TranslationRes,
|
||||
path?: string
|
||||
): TranslationRes => {
|
||||
if (!(obj instanceof Object)) return { [path ?? '']: obj };
|
||||
|
||||
return Object.keys(obj).reduce((output, key) => {
|
||||
return {
|
||||
...output,
|
||||
...flattenTranslation(obj[key], path ? path + '.' + key : key),
|
||||
};
|
||||
}, {});
|
||||
};
|
||||
18
packages/frontend/i18n/tsconfig.json
Normal file
18
packages/frontend/i18n/tsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"include": ["./src"],
|
||||
"exclude": ["./src/resources", "./src/scripts"],
|
||||
"compilerOptions": {
|
||||
"noEmit": false,
|
||||
"composite": true,
|
||||
"outDir": "lib"
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.resources.json"
|
||||
},
|
||||
{
|
||||
"path": "./tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
8
packages/frontend/i18n/tsconfig.node.json
Normal file
8
packages/frontend/i18n/tsconfig.node.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"types": ["node"],
|
||||
"outDir": "./lib/scripts"
|
||||
},
|
||||
"include": ["./src/scripts"]
|
||||
}
|
||||
13
packages/frontend/i18n/tsconfig.resources.json
Normal file
13
packages/frontend/i18n/tsconfig.resources.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"module": "NodeNext",
|
||||
"resolveJsonModule": true,
|
||||
"moduleResolution": "nodenext",
|
||||
"outDir": "lib/resources",
|
||||
"noEmit": false
|
||||
},
|
||||
"include": ["./src/resources/**/*.ts", "./src/resources/**/*.json"],
|
||||
"exclude": ["dist", "lib"]
|
||||
}
|
||||
Reference in New Issue
Block a user