From d5ccc20e04ce63989a2f6ddfc41df01df32a43ba Mon Sep 17 00:00:00 2001 From: Nils Jacobsen <58360188+NilsJacobsen@users.noreply.github.com> Date: Mon, 17 Apr 2023 03:56:15 +0200 Subject: [PATCH] feat: add inlang to make the contribution of translations easier (#2262) * feat: add inlang.config.js * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations * inlang: update translations --------- Co-authored-by: NilsJacobsen <> --- .../assets/translations/de-DE.json | 303 ++++---- .../assets/translations/en.json | 6 +- .../assets/translations/eu-ES.json | 2 +- .../assets/translations/pt-BR.json | 6 +- .../assets/translations/pt-PT.json | 293 ++++---- .../assets/translations/ru-RU.json | 696 +++++++++--------- inlang.config.js | 29 + 7 files changed, 686 insertions(+), 649 deletions(-) create mode 100644 inlang.config.js diff --git a/frontend/appflowy_flutter/assets/translations/de-DE.json b/frontend/appflowy_flutter/assets/translations/de-DE.json index 6ce661e7b9..e1aa89897a 100644 --- a/frontend/appflowy_flutter/assets/translations/de-DE.json +++ b/frontend/appflowy_flutter/assets/translations/de-DE.json @@ -1,150 +1,159 @@ { - "appName": "AppFlowy", - "defaultUsername": "Ich", - "welcomeText": "Willkommen bei @:appName", - "githubStarText": "GitHub Star vergeben", - "subscribeNewsletterText": "Abonniere den Newsletter", - "letsGoButtonText": "Los geht's", - "title": "Titel", - "signUp": { - "buttonText": "Registrieren", - "title": "Registriere dich bei @:appName", - "getStartedText": "Erste Schritte", - "emptyPasswordError": "Passwort darf nicht leer sein", - "repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein", - "unmatchedPasswordError": "Passwörter stimmen nicht überein", - "alreadyHaveAnAccount": "Bereits registriert?", - "emailHint": "E-Mail", - "passwordHint": "Passwort", - "repeatPasswordHint": "Wiederhole Passwort" - }, - "signIn": { - "loginTitle": "Bei @:appName einloggen", - "loginButtonText": "Anmelden", - "buttonText": "Anmelden", - "forgotPassword": "Passwort vergessen?", - "emailHint": "E-Mail", - "passwordHint": "Passwort", - "dontHaveAnAccount": "Du besitzt noch kein Konto?", - "repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein", - "unmatchedPasswordError": "Passwörter stimmen nicht überein" - }, - "workspace": { - "create": "Arbeitsbereich erstellen", - "hint": "Arbeitsbereich", - "notFoundError": "Arbeitsbereich nicht gefunden" - }, - "shareAction": { - "buttonText": "Teilen", - "workInProgress": "Demnächst verfügbar", - "markdown": "Markdown", - "copyLink": "Link kopieren" - }, - "disclosureAction": { - "rename": "Umbenennen", - "delete": "Löschen", - "duplicate": "Duplizieren" - }, - "blankPageTitle": "Leere Seite", - "newPageText": "Neue Seite", - "trash": { - "text": "Papierkorb", - "restoreAll": "Alles wiederherstellen", - "deleteAll": "Alles löschen", - "pageHeader": { - "fileName": "Dateiname", - "lastModified": "Letzte Änderung", - "created": "Erstellt" - } - }, - "deletePagePrompt": { - "text": "Diese Seite ist im Papierkorb", - "restore": "Seite wiederherstellen", - "deletePermanent": "Dauerhaft löschen" - }, - "dialogCreatePageNameHint": "Seitenname", - "questionBubble": { - "whatsNew": "Was gibt es Neues?", - "help": "Hilfe & Support", - "debug": { - "name": "Debug-Informationen", - "success": "Debug-Informationen in die Zwischenablage kopiert!", - "fail": "Debug-Informationen können nicht in die Zwischenablage kopiert werden" - } - }, - "menuAppHeader": { - "addPageTooltip": "Schnell eine Seite innerhalb hinzufügen", - "defaultNewPageName": "Unbenannt", - "renameDialog": "Umbenennen" - }, - "toolbar": { - "undo": "Rückgängig", - "redo": "Wiederherstellen", - "bold": "Fett", - "italic": "Kursiv", - "underline": "Unterstreichen", - "strike": "Durchstreichen", - "numList": "Nummerierte Liste", - "bulletList": "Aufzählung", - "checkList": "Checkliste", - "inlineCode": "Inline-Code", - "quote": "Zitat", - "header": "Überschrift", - "highlight": "Hervorhebung" - }, - "tooltip": { - "lightMode": "In den hellen Modus wechseln", - "darkMode": "In den dunklen Modus wechseln" - }, - "contactsPage": { - "title": "Kontakte", - "whatsHappening": "Was geschieht diese Woche?", - "addContact": "Kontakt hinzufügen", - "editContact": "Kontakt bearbeiten" - }, - "button": { - "OK": "OK", - "Cancel": "Abbrechen", - "signIn": "Anmelden", - "signOut": "Abmelden", - "complete": "Fertig", - "save": "Speichern" - }, - "label": { - "welcome": "Willkommen!", - "firstName": "Vorname", - "middleName": "Zweiter Vorname", - "lastName": "Nachname", - "stepX": "Schritt {X}" - }, - "oAuth": { - "err": { - "failedTitle": "Keine Verbindung zu Ihrem Konto möglich.", - "failedMsg": "Bitte vergewissern Sie sich, dass Sie den Anmeldevorgang in Ihrem Browser abgeschlossen haben." - }, - "google": { - "title": "GOOGLE ANMELDUNG", - "instruction1": "Um Ihre Google-Kontakte zu importieren, müssen Sie diese Anwendung über Ihren Webbrowser autorisieren.", - "instruction2": "Kopieren Sie diesen Code in Ihre Zwischenablage, indem Sie auf das Symbol klicken oder den Text auswählen:", - "instruction3": "Rufen Sie den folgenden Link in Ihrem Webbrowser auf, und geben Sie den obigen Code ein:", - "instruction4": "Klicken Sie unten auf die Schaltfläche, wenn Sie die Anmeldung abgeschlossen haben:" - } - }, - "settings": { - "title": "Einstellungen", - "menu": { - "appearance": "Aussehen", - "language": "Sprache", - "open": "Einstellungen öffnen" - }, - "appearance": { - "lightLabel": "Heller Modus", - "darkLabel": "Dunkler Modus" - } - }, - "sideBar": { - "openSidebar": "Open sidebar", - "closeSidebar": "Close sidebar" + "appName": "AppFlowy", + "defaultUsername": "Ich", + "welcomeText": "Willkommen bei @:appName", + "githubStarText": "GitHub Star vergeben", + "subscribeNewsletterText": "Abonniere den Newsletter", + "letsGoButtonText": "Los geht's", + "title": "Titel", + "signUp": { + "buttonText": "Registrieren", + "title": "Registriere dich bei @:appName", + "getStartedText": "Erste Schritte", + "emptyPasswordError": "Passwort darf nicht leer sein", + "repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein", + "unmatchedPasswordError": "Passwörter stimmen nicht überein", + "alreadyHaveAnAccount": "Bereits registriert?", + "emailHint": "E-Mail", + "passwordHint": "Passwort", + "repeatPasswordHint": "Wiederhole Passwort" + }, + "signIn": { + "loginTitle": "Bei @:appName einloggen", + "loginButtonText": "Anmelden", + "buttonText": "Anmelden", + "forgotPassword": "Passwort vergessen?", + "emailHint": "E-Mail", + "passwordHint": "Passwort", + "dontHaveAnAccount": "Du besitzt noch kein Konto?", + "repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein", + "unmatchedPasswordError": "Passwörter stimmen nicht überein" + }, + "workspace": { + "create": "Arbeitsbereich erstellen", + "hint": "Arbeitsbereich", + "notFoundError": "Arbeitsbereich nicht gefunden" + }, + "shareAction": { + "buttonText": "Teilen", + "workInProgress": "Demnächst verfügbar", + "markdown": "Markdown", + "copyLink": "Link kopieren" + }, + "disclosureAction": { + "rename": "Umbenennen", + "delete": "Löschen", + "duplicate": "Duplizieren" + }, + "blankPageTitle": "Leere Seite", + "newPageText": "Neue Seite", + "trash": { + "text": "Papierkorb", + "restoreAll": "Alles wiederherstellen", + "deleteAll": "Alles löschen", + "pageHeader": { + "fileName": "Dateiname", + "lastModified": "Letzte Änderung", + "created": "Erstellt" } + }, + "deletePagePrompt": { + "text": "Diese Seite ist im Papierkorb", + "restore": "Seite wiederherstellen", + "deletePermanent": "Dauerhaft löschen" + }, + "dialogCreatePageNameHint": "Seitenname", + "questionBubble": { + "whatsNew": "Was gibt es Neues?", + "help": "Hilfe & Support", + "debug": { + "name": "Debug-Informationen", + "success": "Debug-Informationen in die Zwischenablage kopiert!", + "fail": "Debug-Informationen können nicht in die Zwischenablage kopiert werden" + }, + "shortcuts": "Abkürzungen" + }, + "menuAppHeader": { + "addPageTooltip": "Schnell eine Seite innerhalb hinzufügen", + "defaultNewPageName": "Unbenannt", + "renameDialog": "Umbenennen" + }, + "toolbar": { + "undo": "Rückgängig", + "redo": "Wiederherstellen", + "bold": "Fett", + "italic": "Kursiv", + "underline": "Unterstreichen", + "strike": "Durchstreichen", + "numList": "Nummerierte Liste", + "bulletList": "Aufzählung", + "checkList": "Checkliste", + "inlineCode": "Inline-Code", + "quote": "Zitat", + "header": "Überschrift", + "highlight": "Hervorhebung", + "color": "Farbe" + }, + "tooltip": { + "lightMode": "In den hellen Modus wechseln", + "darkMode": "In den dunklen Modus wechseln", + "openAsPage": "Als Seite öffnen" + }, + "contactsPage": { + "title": "Kontakte", + "whatsHappening": "Was geschieht diese Woche?", + "addContact": "Kontakt hinzufügen", + "editContact": "Kontakt bearbeiten" + }, + "button": { + "OK": "OK", + "Cancel": "Abbrechen", + "signIn": "Anmelden", + "signOut": "Abmelden", + "complete": "Fertig", + "save": "Speichern" + }, + "label": { + "welcome": "Willkommen!", + "firstName": "Vorname", + "middleName": "Zweiter Vorname", + "lastName": "Nachname", + "stepX": "Schritt {X}" + }, + "oAuth": { + "err": { + "failedTitle": "Keine Verbindung zu Ihrem Konto möglich.", + "failedMsg": "Bitte vergewissern Sie sich, dass Sie den Anmeldevorgang in Ihrem Browser abgeschlossen haben." + }, + "google": { + "title": "GOOGLE ANMELDUNG", + "instruction1": "Um Ihre Google-Kontakte zu importieren, müssen Sie diese Anwendung über Ihren Webbrowser autorisieren.", + "instruction2": "Kopieren Sie diesen Code in Ihre Zwischenablage, indem Sie auf das Symbol klicken oder den Text auswählen:", + "instruction3": "Rufen Sie den folgenden Link in Ihrem Webbrowser auf, und geben Sie den obigen Code ein:", + "instruction4": "Klicken Sie unten auf die Schaltfläche, wenn Sie die Anmeldung abgeschlossen haben:" + } + }, + "settings": { + "title": "Einstellungen", + "menu": { + "appearance": "Aussehen", + "language": "Sprache", + "open": "Einstellungen öffnen" + }, + "appearance": { + "lightLabel": "Heller Modus", + "darkLabel": "Dunkler Modus" + } + }, + "sideBar": { + "openSidebar": "Open sidebar", + "closeSidebar": "Close sidebar" + }, + "moreAction": { + "small": "klein", + "medium": "mittel", + "large": "groß", + "fontSize": "Schriftgröße", + "import": "Importieren" } - \ No newline at end of file +} \ No newline at end of file diff --git a/frontend/appflowy_flutter/assets/translations/en.json b/frontend/appflowy_flutter/assets/translations/en.json index ba64836b15..0c1b71700c 100644 --- a/frontend/appflowy_flutter/assets/translations/en.json +++ b/frontend/appflowy_flutter/assets/translations/en.json @@ -385,8 +385,8 @@ "couldNotFetchImage": "Could not fetch image", "imageSavingFailed": "Image Saving Failed", "addIcon": "Add Icon", - "coverRemoveAlert" : "It will be removed from cover after it is deleted.", - "alertDialogConfirmation" : "Are you sure, you want to continue?" + "coverRemoveAlert": "It will be removed from cover after it is deleted.", + "alertDialogConfirmation": "Are you sure, you want to continue?" } } }, @@ -413,4 +413,4 @@ "layoutDateField": "Layout calendar by" } } -} +} \ No newline at end of file diff --git a/frontend/appflowy_flutter/assets/translations/eu-ES.json b/frontend/appflowy_flutter/assets/translations/eu-ES.json index 5dbcc7f604..4e6a770a0f 100644 --- a/frontend/appflowy_flutter/assets/translations/eu-ES.json +++ b/frontend/appflowy_flutter/assets/translations/eu-ES.json @@ -330,4 +330,4 @@ "nextMonth": "Hurrengo hilabetea" } } -} +} \ No newline at end of file diff --git a/frontend/appflowy_flutter/assets/translations/pt-BR.json b/frontend/appflowy_flutter/assets/translations/pt-BR.json index b50c92b696..188b1c1169 100644 --- a/frontend/appflowy_flutter/assets/translations/pt-BR.json +++ b/frontend/appflowy_flutter/assets/translations/pt-BR.json @@ -39,7 +39,7 @@ "workInProgress": "Em breve", "markdown": "Marcador", "copyLink": "Copiar link" - }, + }, "moreAction": { "small": "pequeno", "medium": "médio", @@ -177,7 +177,7 @@ "system": "Adaptar-se ao sistema" }, "theme": "Tema" - }, + }, "files": { "defaultLocation": "Onde os seus dados ficam armazenados", "doubleTapToCopy": "Clique duas vezes para copiar o caminho", @@ -320,7 +320,7 @@ "pannelTitle": "Escolha uma opção ou crie uma", "searchOption": "Procurar uma opção" }, - "checklist": { + "checklist": { "panelTitle": "Adicionar um item" }, "menuName": "Grade" diff --git a/frontend/appflowy_flutter/assets/translations/pt-PT.json b/frontend/appflowy_flutter/assets/translations/pt-PT.json index a9291949bd..a95d2d6ef2 100644 --- a/frontend/appflowy_flutter/assets/translations/pt-PT.json +++ b/frontend/appflowy_flutter/assets/translations/pt-PT.json @@ -1,150 +1,149 @@ { - "appName": "AppFlowy", - "defaultUsername": "Me", - "welcomeText": "Bem vindo ao @:appName", - "githubStarText": "Star on GitHub", - "subscribeNewsletterText": "Inscreve-te ao Newsletter", - "letsGoButtonText": "Bora", - "title": "Título", - "signUp": { - "buttonText": "Inscreve-te", - "title": "Inscreve-te ao @:appName", - "getStartedText": "Começar", - "emptyPasswordError": "A palavra-passe não pode estar em branco.", - "repeatPasswordEmptyError": "Confirmar a palavra-passe não pode estar em branco.", - "unmatchedPasswordError": "As palavras-passes não coincidem.", - "alreadyHaveAnAccount": "Já possuis uma conta?", - "emailHint": "Email", - "passwordHint": "Password", - "repeatPasswordHint": "Confirma a tua password" - }, - "signIn": { - "loginTitle": "Entre no @:appName", - "loginButtonText": "Login", - "buttonText": "Entre", - "forgotPassword": "Esqueceste-te da tua palavra-passe?", - "emailHint": "Email", - "passwordHint": "Palavra-passe", - "dontHaveAnAccount": "Não possuis uma conta?", - "repeatPasswordEmptyError": "Confirmar a palavra-passe não pode estar em branco.", - "unmatchedPasswordError": "As palavras-passes não conferem." - }, - "workspace": { - "create": "Cria um ambiente de trabalho", - "hint": "ambiente de trabalho", - "notFoundError": "Ambiente de trabalho não encontrada" - }, - "shareAction": { - "buttonText": "Partilhar", - "workInProgress": "Em breve", - "markdown": "Markdown", - "copyLink": "Copiar o link" - }, - "disclosureAction": { - "rename": "Renomear", - "delete": "Apagar", - "duplicate": "Duplicar" - }, - "blankPageTitle": "Página em branco", - "newPageText": "Nova página", - "trash": { - "text": "Lixo", - "restoreAll": "Restaurar todos", - "deleteAll": "Apagar todos", - "pageHeader": { - "fileName": "Nome do ficheiro", - "lastModified": "Última modificação", - "created": "Criado" - } - }, - "deletePagePrompt": { - "text": "Esta página está no lixo", - "restore": "Restaurar a página", - "deletePermanent": "Apagar permanentemente" - }, - "dialogCreatePageNameHint": "Nome da página", - "questionBubble": { - "whatsNew": "O que há de novo?", - "help": "Ajuda & Suporte", - "debug": { - "name": "Informação de depuração", - "success": "Copiar informação de depuração para o clipboard!", - "fail": "Falha em copiar a informação de depuração para o clipboard" - } - }, - "menuAppHeader": { - "addPageTooltip": "Adiciona uma nova página.", - "defaultNewPageName": "Sem título", - "renameDialog": "Renomear" - }, - "toolbar": { - "undo": "Desfazer", - "redo": "Refazer", - "bold": "Negrito", - "italic": "Itálico", - "underline": "Sublinhado", - "strike": "Riscado", - "numList": "Lista numerada", - "bulletList": "Lista com marcadores", - "checkList": "Lista de verificação", - "inlineCode": "Embutir código", - "quote": "Citação em bloco", - "header": "Cabeçalho", - "highlight": "Realçar" - }, - "tooltip": { - "lightMode": "Mudar para o modo Claro.", - "darkMode": "Mudar para o modo Escuro." - }, - "contactsPage": { - "title": "Conctatos", - "whatsHappening": "O que está a acontecer nesta semana?", - "addContact": "Adicionar um conctato", - "editContact": "Editar um conctato" - }, - "button": { - "OK": "OK", - "Cancel": "Cancelar", - "signIn": "Entrar", - "signOut": "Sair", - "complete": "Completar", - "save": "Guardar" - }, - "label": { - "welcome": "Bem vindo!", - "firstName": "Nome", - "middleName": "Nome do Meio", - "lastName": "Apelido", - "stepX": "Passo {X}" - }, - "oAuth": { - "err": { - "failedTitle": "Erro ao conectar à sua conta.", - "failedMsg": "Verifica se concluiste o processo de login no teu navegador." - }, - "google": { - "title": "GOOGLE SIGN-IN", - "instruction1": "Para importar os teus Conctatos do Google, tens de autorizar esta aplicação usando o teu navegador web.", - "instruction2": "Copia este código para a tua área de transferências clicando no ícone ou selecionando o texto:", - "instruction3": "Navega até o link a seguir no seu navegador e digite o código acima:", - "instruction4": "Clica no botão abaixo ao concluir a inscrição:" - } - }, - "settings": { - "title": "Definições", - "menu": { - "appearance": "Aparência", - "language": "Idioma", - "open": "Abrir as Definições" - }, - "appearance": { - "lightLabel": "Modo Claro", - "darkLabel": "Modo Escuro" - } - }, - "sideBar": { - "openSidebar": "Open sidebar", - "closeSidebar": "Close sidebar" + "appName": "AppFlowy", + "defaultUsername": "Me", + "welcomeText": "Bem vindo ao @:appName", + "githubStarText": "Star on GitHub", + "subscribeNewsletterText": "Inscreve-te ao Newsletter", + "letsGoButtonText": "Bora", + "title": "Título", + "signUp": { + "buttonText": "Inscreve-te", + "title": "Inscreve-te ao @:appName", + "getStartedText": "Começar", + "emptyPasswordError": "A palavra-passe não pode estar em branco.", + "repeatPasswordEmptyError": "Confirmar a palavra-passe não pode estar em branco.", + "unmatchedPasswordError": "As palavras-passes não coincidem.", + "alreadyHaveAnAccount": "Já possuis uma conta?", + "emailHint": "Email", + "passwordHint": "Password", + "repeatPasswordHint": "Confirma a tua password" + }, + "signIn": { + "loginTitle": "Entre no @:appName", + "loginButtonText": "Login", + "buttonText": "Entre", + "forgotPassword": "Esqueceste-te da tua palavra-passe?", + "emailHint": "Email", + "passwordHint": "Palavra-passe", + "dontHaveAnAccount": "Não possuis uma conta?", + "repeatPasswordEmptyError": "Confirmar a palavra-passe não pode estar em branco.", + "unmatchedPasswordError": "As palavras-passes não conferem." + }, + "workspace": { + "create": "Cria um ambiente de trabalho", + "hint": "ambiente de trabalho", + "notFoundError": "Ambiente de trabalho não encontrada" + }, + "shareAction": { + "buttonText": "Partilhar", + "workInProgress": "Em breve", + "markdown": "Markdown", + "copyLink": "Copiar o link" + }, + "disclosureAction": { + "rename": "Renomear", + "delete": "Apagar", + "duplicate": "Duplicar" + }, + "blankPageTitle": "Página em branco", + "newPageText": "Nova página", + "trash": { + "text": "Lixo", + "restoreAll": "Restaurar todos", + "deleteAll": "Apagar todos", + "pageHeader": { + "fileName": "Nome do ficheiro", + "lastModified": "Última modificação", + "created": "Criado" } + }, + "deletePagePrompt": { + "text": "Esta página está no lixo", + "restore": "Restaurar a página", + "deletePermanent": "Apagar permanentemente" + }, + "dialogCreatePageNameHint": "Nome da página", + "questionBubble": { + "whatsNew": "O que há de novo?", + "help": "Ajuda & Suporte", + "debug": { + "name": "Informação de depuração", + "success": "Copiar informação de depuração para o clipboard!", + "fail": "Falha em copiar a informação de depuração para o clipboard" + } + }, + "menuAppHeader": { + "addPageTooltip": "Adiciona uma nova página.", + "defaultNewPageName": "Sem título", + "renameDialog": "Renomear" + }, + "toolbar": { + "undo": "Desfazer", + "redo": "Refazer", + "bold": "Negrito", + "italic": "Itálico", + "underline": "Sublinhado", + "strike": "Riscado", + "numList": "Lista numerada", + "bulletList": "Lista com marcadores", + "checkList": "Lista de verificação", + "inlineCode": "Embutir código", + "quote": "Citação em bloco", + "header": "Cabeçalho", + "highlight": "Realçar" + }, + "tooltip": { + "lightMode": "Mudar para o modo Claro.", + "darkMode": "Mudar para o modo Escuro." + }, + "contactsPage": { + "title": "Conctatos", + "whatsHappening": "O que está a acontecer nesta semana?", + "addContact": "Adicionar um conctato", + "editContact": "Editar um conctato" + }, + "button": { + "OK": "OK", + "Cancel": "Cancelar", + "signIn": "Entrar", + "signOut": "Sair", + "complete": "Completar", + "save": "Guardar" + }, + "label": { + "welcome": "Bem vindo!", + "firstName": "Nome", + "middleName": "Nome do Meio", + "lastName": "Apelido", + "stepX": "Passo {X}" + }, + "oAuth": { + "err": { + "failedTitle": "Erro ao conectar à sua conta.", + "failedMsg": "Verifica se concluiste o processo de login no teu navegador." + }, + "google": { + "title": "GOOGLE SIGN-IN", + "instruction1": "Para importar os teus Conctatos do Google, tens de autorizar esta aplicação usando o teu navegador web.", + "instruction2": "Copia este código para a tua área de transferências clicando no ícone ou selecionando o texto:", + "instruction3": "Navega até o link a seguir no seu navegador e digite o código acima:", + "instruction4": "Clica no botão abaixo ao concluir a inscrição:" + } + }, + "settings": { + "title": "Definições", + "menu": { + "appearance": "Aparência", + "language": "Idioma", + "open": "Abrir as Definições" + }, + "appearance": { + "lightLabel": "Modo Claro", + "darkLabel": "Modo Escuro" + } + }, + "sideBar": { + "openSidebar": "Open sidebar", + "closeSidebar": "Close sidebar" } - +} \ No newline at end of file diff --git a/frontend/appflowy_flutter/assets/translations/ru-RU.json b/frontend/appflowy_flutter/assets/translations/ru-RU.json index c46f406311..0a1827bb54 100644 --- a/frontend/appflowy_flutter/assets/translations/ru-RU.json +++ b/frontend/appflowy_flutter/assets/translations/ru-RU.json @@ -1,348 +1,348 @@ -{ - "appName": "AppFlowy", - "defaultUsername": "Я", - "welcomeText": "Добро пожаловать в @:appName", - "githubStarText": "Поставить звезду на GitHub", - "subscribeNewsletterText": "Подписаться на рассылку", - "letsGoButtonText": "Начнём", - "title": "Заголовок", - "signUp": { - "buttonText": "Зарегистрироваться", - "title": "Регистрация в @:appName", - "getStartedText": "Начать", - "emptyPasswordError": "Пароль не может быть пустым", - "repeatPasswordEmptyError": "Повтор пароля не может быть пустым", - "unmatchedPasswordError": "Пароли не совпадают", - "alreadyHaveAnAccount": "Уже есть аккаунт?", - "emailHint": "Электронная почта", - "passwordHint": "Пароль", - "repeatPasswordHint": "Повторите пароль" - }, - "signIn": { - "loginTitle": "Войти в @:appName", - "loginButtonText": "Войти", - "buttonText": "Авторизация", - "forgotPassword": "Забыли пароль?", - "emailHint": "Электронная почта", - "passwordHint": "Пароль", - "dontHaveAnAccount": "Нет аккаунта?", - "repeatPasswordEmptyError": "Повтор пароля не может быть пустым", - "unmatchedPasswordError": "Пароли не совпадают" - }, - "workspace": { - "create": "Создать рабочее пространство", - "hint": "рабочее пространство", - "notFoundError": "Нет такого рабочего пространства" - }, - "shareAction": { - "buttonText": "Поделиться", - "workInProgress": "В разработке", - "markdown": "Markdown", - "copyLink": "Скопировать ссылку" - }, - "moreAction": { - "small": "маленький", - "medium": "средний", - "large": "большой", - "fontSize": "Размер шрифта" - }, - "disclosureAction": { - "rename": "Переименовать", - "delete": "Удалить", - "duplicate": "Дублировать" - }, - "blankPageTitle": "Пустая страница", - "newPageText": "Новая страница", - "trash": { - "text": "Корзина", - "restoreAll": "Восстановить всё", - "deleteAll": "Очистить", - "pageHeader": { - "fileName": "Имя", - "lastModified": "Последнее изменение", - "created": "Создан" - } - }, - "deletePagePrompt": { - "text": "Эта страница в Корзине", - "restore": "Восстановить страницу", - "deletePermanent": "Удалить навсегда" - }, - "dialogCreatePageNameHint": "Имя страницы", - "questionBubble": { - "whatsNew": "Что нового?", - "help": "Помощь", - "debug": { - "name": "Отладочная информация", - "success": "Скопировано в буфер обмена!", - "fail": "Не получилось скопировать" - } - }, - "menuAppHeader": { - "addPageTooltip": "Быстро добавить новую страницу", - "defaultNewPageName": "Без заголовка", - "renameDialog": "Переименовать" - }, - "toolbar": { - "undo": "Отменить", - "redo": "Повторить", - "bold": "Жирный", - "italic": "Курсив", - "underline": "Подчёркнутый", - "strike": "Зачёркнутый", - "numList": "Нумерованный список", - "bulletList": "Маркированный список", - "checkList": "Список To-Do", - "inlineCode": "Код", - "quote": "Цитата", - "header": "Заголовок", - "highlight": "Выделение", - "color": "Цвет" - }, - "tooltip": { - "lightMode": "Переключить на светлую тему", - "darkMode": "Переключить на тёмную тему", - "openAsPage": "Открыть как страницу", - "addNewRow": "Добавить новую строку", - "openMenu": "Открыть меню", - "viewDataBase": "Просмотр базы данных", - "referencePage": "Ссылаются на {name}" - }, - "sideBar": { - "closeSidebar": "Закрыть боковое меню", - "openSidebar": "Открыть боковое меню" - }, - "notifications": { - "export": { - "markdown": "Заметка экспортирована в Markdown", - "path": "Документы/flowy" - } - }, - "contactsPage": { - "title": "Контакты", - "whatsHappening": "Какие события на этой неделе?", - "addContact": "Добавить контакт", - "editContact": "Редактировать контакт" - }, - "button": { - "OK": "OK", - "Cancel": "Отмена", - "signIn": "Войти", - "signOut": "Выйти", - "complete": "Завершить", - "save": "Сохранить" - }, - "label": { - "welcome": "Добро пожаловать!", - "firstName": "Имя", - "middleName": "Отчество", - "lastName": "Фамилия", - "stepX": "Этап {X}" - }, - "oAuth": { - "err": { - "failedTitle": "Не удалось подключиться к вашей учетной записи.", - "failedMsg": "Убедитесь, что вы завершили вход в своём браузере." - }, - "google": { - "title": "Вход через Google", - "instruction1": "Чтобы импортировать ваши Google Контакты, вам нужно будет авторизовать приложение через браузер.", - "instruction2": "Скопируйте этот код в буфер обмена (нажав кнопку или выделив текст):", - "instruction3": "Пройдите по ссылке и введите этот код:", - "instruction4": "Нажмите на кнопку ниже, когда завершите вход:" - } - }, - "settings": { - "title": "Настройки", - "menu": { - "appearance": "Внешний вид", - "language": "Язык", - "user": "Пользователь", - "files": "Файлы", - "open": "Открыть настройки" - }, - "appearance": { - "themeMode": { - "label": "Режим темы", - "light": "Светлая", - "dark": "Тёмная", - "system": "Системная" - }, - "theme": "Тема" - }, - "files": { - "defaultLocation": "Где сейчас хранятся ваши данные", - "doubleTapToCopy": "Нажмите дважды, чтобы скопировать путь", - "restoreLocation": "Восстановить путь AppFlowy по умолчанию", - "customizeLocation": "Открыть другую папку", - "restartApp": "Пожалуйста, перезапустите приложение, чтобы изменения вступили в силу.", - "exportDatabase": "Экспорт базы данных", - "selectFiles": "Выбрать файлы, которые необходимо экспортировать", - "createNewFolder": "Создать новую папку", - "createNewFolderDesc": "Указать, где хранить свои данные ...", - "open": "Открыть", - "openFolder": "Открыть существующую папку", - "openFolderDesc": "Чтение и запись в существующую папку AppFlowy ...", - "folderHintText": "имя папки", - "location": "Создание новой папки", - "locationDesc": "Выбрать имя папки данных AppFlowy", - "browser": "Обзор", - "create": "Создать", - "folderPath": "Путь к вашей папке", - "locationCannotBeEmpty": "Путь не может быть пустым" - } - }, - "grid": { - "settings": { - "filter": "Фильтр", - "sort": "Сортировать", - "sortBy": "Сортировать по", - "Properties": "Свойства", - "group": "Группировать", - "addFilter": "Добавить фильтр", - "deleteFilter": "Удалить фильтр", - "filterBy": "Фильтровать по...", - "typeAValue": "Введите значение..." - }, - "textFilter": { - "contains": "Содержит", - "doesNotContain": "Не содержит", - "endsWith": "Заканчивается на", - "startWith": "Начинается с", - "is": "Является", - "isNot": "Не является", - "isEmpty": "Пусто", - "isNotEmpty": "Не пусто", - "choicechipPrefix": { - "isNot": "Не является", - "startWith": "Начинается с", - "endWith": "Заканчивается на", - "isEmpty": "пусто", - "isNotEmpty": "не пусто" - } - }, - "checkboxFilter": { - "isChecked": "Отмечено", - "isUnchecked": "Не отмечено", - "choicechipPrefix": { - "is": "является" - } - }, - "checklistFilter": { - "isComplete": "завершено", - "isIncomplted": "не завершено" - }, - "singleSelectOptionFilter": { - "is": "Является", - "isNot": "Не является", - "isEmpty": "Пусто", - "isNotEmpty": "Не пусто" - }, - "multiSelectOptionFilter": { - "contains": "Содержит", - "doesNotContain": "Не содержит", - "isEmpty": "Пусто", - "isNotEmpty": "Не пусто" - }, - "field": { - "hide": "Скрыть", - "insertLeft": "Вставить слева", - "insertRight": "Вставить справа", - "duplicate": "Дублировать", - "delete": "Удалить", - "textFieldName": "Текст", - "checkboxFieldName": "Чекбокс", - "dateFieldName": "Дата", - "numberFieldName": "Число", - "singleSelectFieldName": "Выбор", - "multiSelectFieldName": "Выбор нескольких", - "urlFieldName": "URL", - "checklistFieldName": "Контрольный список", - "numberFormat": "Формат числа", - "dateFormat": "Формат даты", - "includeTime": "Время", - "dateFormatFriendly": "День Месяц, Год", - "dateFormatISO": "Год-Месяц-День", - "dateFormatLocal": "Месяц/День/Год", - "dateFormatUS": "Год/Месяц/День", - "timeFormat": "Форматировать время", - "invalidTimeFormat": "Неверный формат", - "timeFormatTwelveHour": "12 часов", - "timeFormatTwentyFourHour": "24 часа", - "addSelectOption": "Добавить вариант", - "optionTitle": "Варианты", - "addOption": "Добавить", - "editProperty": "Редактировать свойство", - "newProperty": "Добавить колонку", - "deleteFieldPromptMessage": "Вы уверены? Свойство будет удалено" - }, - "sort": { - "ascending": "По возрастанию", - "descending": "По убыванию", - "deleteSort": "Удалить сортировку", - "addSort": "Добавить сортировку" - }, - "row": { - "duplicate": "Дублировать", - "delete": "Удалить", - "textPlaceholder": "Пусто", - "copyProperty": "Свойство скопировано", - "count": "Количество", - "newRow": "Новая строка" - }, - "selectOption": { - "create": "Создать", - "purpleColor": "Фиолетовый", - "pinkColor": "Розовый", - "lightPinkColor": "Светло-розовый", - "orangeColor": "Оранжевый", - "yellowColor": "Желтый", - "limeColor": "Ярко-зелёный", - "greenColor": "Зелёный", - "aquaColor": "Бирюзовый", - "blueColor": "Синий", - "deleteTag": "Удалить вариант", - "colorPanelTitle": "Цвета", - "panelTitle": "Выберите или создайте вариант", - "searchOption": "Поиск" - }, - "checklist": { - "panelTitle": "Добавить элемент" - }, - "menuName": "Сетка" - }, - "document": { - "menuName": "Документ", - "date": { - "timeHintTextInTwelveHour": "01:00 PM", - "timeHintTextInTwentyFourHour": "13:00" - }, - "slashMenu": { - "board": { - "selectABoardToLinkTo": "Выбрать доску для связи с" - }, - "grid": { - "selectAGridToLinkTo": "Выберите сетку для связи с" - } - }, - "plugins": { - "referencedBoard": "Связанные доски", - "referencedGrid": "Связанные сетки" - } - }, - "board": { - "column": { - "create_new_card": "Создать" - }, - "menuName": "Доска" - }, - "calendar": { - "menuName": "Календарь", - "navigation": { - "today": "Сегодня", - "jumpToday": "Перейти к сегодняшнему дню", - "previousMonth": "Предыдущий месяц", - "nextMonth": "Следующий месяц" - } - } -} +{ + "appName": "AppFlowy", + "defaultUsername": "Я", + "welcomeText": "Добро пожаловать в @:appName", + "githubStarText": "Поставить звезду на GitHub", + "subscribeNewsletterText": "Подписаться на рассылку", + "letsGoButtonText": "Начнём", + "title": "Заголовок", + "signUp": { + "buttonText": "Зарегистрироваться", + "title": "Регистрация в @:appName", + "getStartedText": "Начать", + "emptyPasswordError": "Пароль не может быть пустым", + "repeatPasswordEmptyError": "Повтор пароля не может быть пустым", + "unmatchedPasswordError": "Пароли не совпадают", + "alreadyHaveAnAccount": "Уже есть аккаунт?", + "emailHint": "Электронная почта", + "passwordHint": "Пароль", + "repeatPasswordHint": "Повторите пароль" + }, + "signIn": { + "loginTitle": "Войти в @:appName", + "loginButtonText": "Войти", + "buttonText": "Авторизация", + "forgotPassword": "Забыли пароль?", + "emailHint": "Электронная почта", + "passwordHint": "Пароль", + "dontHaveAnAccount": "Нет аккаунта?", + "repeatPasswordEmptyError": "Повтор пароля не может быть пустым", + "unmatchedPasswordError": "Пароли не совпадают" + }, + "workspace": { + "create": "Создать рабочее пространство", + "hint": "рабочее пространство", + "notFoundError": "Нет такого рабочего пространства" + }, + "shareAction": { + "buttonText": "Поделиться", + "workInProgress": "В разработке", + "markdown": "Markdown", + "copyLink": "Скопировать ссылку" + }, + "moreAction": { + "small": "маленький", + "medium": "средний", + "large": "большой", + "fontSize": "Размер шрифта" + }, + "disclosureAction": { + "rename": "Переименовать", + "delete": "Удалить", + "duplicate": "Дублировать" + }, + "blankPageTitle": "Пустая страница", + "newPageText": "Новая страница", + "trash": { + "text": "Корзина", + "restoreAll": "Восстановить всё", + "deleteAll": "Очистить", + "pageHeader": { + "fileName": "Имя", + "lastModified": "Последнее изменение", + "created": "Создан" + } + }, + "deletePagePrompt": { + "text": "Эта страница в Корзине", + "restore": "Восстановить страницу", + "deletePermanent": "Удалить навсегда" + }, + "dialogCreatePageNameHint": "Имя страницы", + "questionBubble": { + "whatsNew": "Что нового?", + "help": "Помощь", + "debug": { + "name": "Отладочная информация", + "success": "Скопировано в буфер обмена!", + "fail": "Не получилось скопировать" + } + }, + "menuAppHeader": { + "addPageTooltip": "Быстро добавить новую страницу", + "defaultNewPageName": "Без заголовка", + "renameDialog": "Переименовать" + }, + "toolbar": { + "undo": "Отменить", + "redo": "Повторить", + "bold": "Жирный", + "italic": "Курсив", + "underline": "Подчёркнутый", + "strike": "Зачёркнутый", + "numList": "Нумерованный список", + "bulletList": "Маркированный список", + "checkList": "Список To-Do", + "inlineCode": "Код", + "quote": "Цитата", + "header": "Заголовок", + "highlight": "Выделение", + "color": "Цвет" + }, + "tooltip": { + "lightMode": "Переключить на светлую тему", + "darkMode": "Переключить на тёмную тему", + "openAsPage": "Открыть как страницу", + "addNewRow": "Добавить новую строку", + "openMenu": "Открыть меню", + "viewDataBase": "Просмотр базы данных", + "referencePage": "Ссылаются на {name}" + }, + "sideBar": { + "closeSidebar": "Закрыть боковое меню", + "openSidebar": "Открыть боковое меню" + }, + "notifications": { + "export": { + "markdown": "Заметка экспортирована в Markdown", + "path": "Документы/flowy" + } + }, + "contactsPage": { + "title": "Контакты", + "whatsHappening": "Какие события на этой неделе?", + "addContact": "Добавить контакт", + "editContact": "Редактировать контакт" + }, + "button": { + "OK": "OK", + "Cancel": "Отмена", + "signIn": "Войти", + "signOut": "Выйти", + "complete": "Завершить", + "save": "Сохранить" + }, + "label": { + "welcome": "Добро пожаловать!", + "firstName": "Имя", + "middleName": "Отчество", + "lastName": "Фамилия", + "stepX": "Этап {X}" + }, + "oAuth": { + "err": { + "failedTitle": "Не удалось подключиться к вашей учетной записи.", + "failedMsg": "Убедитесь, что вы завершили вход в своём браузере." + }, + "google": { + "title": "Вход через Google", + "instruction1": "Чтобы импортировать ваши Google Контакты, вам нужно будет авторизовать приложение через браузер.", + "instruction2": "Скопируйте этот код в буфер обмена (нажав кнопку или выделив текст):", + "instruction3": "Пройдите по ссылке и введите этот код:", + "instruction4": "Нажмите на кнопку ниже, когда завершите вход:" + } + }, + "settings": { + "title": "Настройки", + "menu": { + "appearance": "Внешний вид", + "language": "Язык", + "user": "Пользователь", + "files": "Файлы", + "open": "Открыть настройки" + }, + "appearance": { + "themeMode": { + "label": "Режим темы", + "light": "Светлая", + "dark": "Тёмная", + "system": "Системная" + }, + "theme": "Тема" + }, + "files": { + "defaultLocation": "Где сейчас хранятся ваши данные", + "doubleTapToCopy": "Нажмите дважды, чтобы скопировать путь", + "restoreLocation": "Восстановить путь AppFlowy по умолчанию", + "customizeLocation": "Открыть другую папку", + "restartApp": "Пожалуйста, перезапустите приложение, чтобы изменения вступили в силу.", + "exportDatabase": "Экспорт базы данных", + "selectFiles": "Выбрать файлы, которые необходимо экспортировать", + "createNewFolder": "Создать новую папку", + "createNewFolderDesc": "Указать, где хранить свои данные ...", + "open": "Открыть", + "openFolder": "Открыть существующую папку", + "openFolderDesc": "Чтение и запись в существующую папку AppFlowy ...", + "folderHintText": "имя папки", + "location": "Создание новой папки", + "locationDesc": "Выбрать имя папки данных AppFlowy", + "browser": "Обзор", + "create": "Создать", + "folderPath": "Путь к вашей папке", + "locationCannotBeEmpty": "Путь не может быть пустым" + } + }, + "grid": { + "settings": { + "filter": "Фильтр", + "sort": "Сортировать", + "sortBy": "Сортировать по", + "Properties": "Свойства", + "group": "Группировать", + "addFilter": "Добавить фильтр", + "deleteFilter": "Удалить фильтр", + "filterBy": "Фильтровать по...", + "typeAValue": "Введите значение..." + }, + "textFilter": { + "contains": "Содержит", + "doesNotContain": "Не содержит", + "endsWith": "Заканчивается на", + "startWith": "Начинается с", + "is": "Является", + "isNot": "Не является", + "isEmpty": "Пусто", + "isNotEmpty": "Не пусто", + "choicechipPrefix": { + "isNot": "Не является", + "startWith": "Начинается с", + "endWith": "Заканчивается на", + "isEmpty": "пусто", + "isNotEmpty": "не пусто" + } + }, + "checkboxFilter": { + "isChecked": "Отмечено", + "isUnchecked": "Не отмечено", + "choicechipPrefix": { + "is": "является" + } + }, + "checklistFilter": { + "isComplete": "завершено", + "isIncomplted": "не завершено" + }, + "singleSelectOptionFilter": { + "is": "Является", + "isNot": "Не является", + "isEmpty": "Пусто", + "isNotEmpty": "Не пусто" + }, + "multiSelectOptionFilter": { + "contains": "Содержит", + "doesNotContain": "Не содержит", + "isEmpty": "Пусто", + "isNotEmpty": "Не пусто" + }, + "field": { + "hide": "Скрыть", + "insertLeft": "Вставить слева", + "insertRight": "Вставить справа", + "duplicate": "Дублировать", + "delete": "Удалить", + "textFieldName": "Текст", + "checkboxFieldName": "Чекбокс", + "dateFieldName": "Дата", + "numberFieldName": "Число", + "singleSelectFieldName": "Выбор", + "multiSelectFieldName": "Выбор нескольких", + "urlFieldName": "URL", + "checklistFieldName": "Контрольный список", + "numberFormat": "Формат числа", + "dateFormat": "Формат даты", + "includeTime": "Время", + "dateFormatFriendly": "День Месяц, Год", + "dateFormatISO": "Год-Месяц-День", + "dateFormatLocal": "Месяц/День/Год", + "dateFormatUS": "Год/Месяц/День", + "timeFormat": "Форматировать время", + "invalidTimeFormat": "Неверный формат", + "timeFormatTwelveHour": "12 часов", + "timeFormatTwentyFourHour": "24 часа", + "addSelectOption": "Добавить вариант", + "optionTitle": "Варианты", + "addOption": "Добавить", + "editProperty": "Редактировать свойство", + "newProperty": "Добавить колонку", + "deleteFieldPromptMessage": "Вы уверены? Свойство будет удалено" + }, + "sort": { + "ascending": "По возрастанию", + "descending": "По убыванию", + "deleteSort": "Удалить сортировку", + "addSort": "Добавить сортировку" + }, + "row": { + "duplicate": "Дублировать", + "delete": "Удалить", + "textPlaceholder": "Пусто", + "copyProperty": "Свойство скопировано", + "count": "Количество", + "newRow": "Новая строка" + }, + "selectOption": { + "create": "Создать", + "purpleColor": "Фиолетовый", + "pinkColor": "Розовый", + "lightPinkColor": "Светло-розовый", + "orangeColor": "Оранжевый", + "yellowColor": "Желтый", + "limeColor": "Ярко-зелёный", + "greenColor": "Зелёный", + "aquaColor": "Бирюзовый", + "blueColor": "Синий", + "deleteTag": "Удалить вариант", + "colorPanelTitle": "Цвета", + "panelTitle": "Выберите или создайте вариант", + "searchOption": "Поиск" + }, + "checklist": { + "panelTitle": "Добавить элемент" + }, + "menuName": "Сетка" + }, + "document": { + "menuName": "Документ", + "date": { + "timeHintTextInTwelveHour": "01:00 PM", + "timeHintTextInTwentyFourHour": "13:00" + }, + "slashMenu": { + "board": { + "selectABoardToLinkTo": "Выбрать доску для связи с" + }, + "grid": { + "selectAGridToLinkTo": "Выберите сетку для связи с" + } + }, + "plugins": { + "referencedBoard": "Связанные доски", + "referencedGrid": "Связанные сетки" + } + }, + "board": { + "column": { + "create_new_card": "Создать" + }, + "menuName": "Доска" + }, + "calendar": { + "menuName": "Календарь", + "navigation": { + "today": "Сегодня", + "jumpToday": "Перейти к сегодняшнему дню", + "previousMonth": "Предыдущий месяц", + "nextMonth": "Следующий месяц" + } + } +} \ No newline at end of file diff --git a/inlang.config.js b/inlang.config.js new file mode 100644 index 0000000000..0cf8ffc43c --- /dev/null +++ b/inlang.config.js @@ -0,0 +1,29 @@ + +// @ts-check + +/** + * @type { import("@inlang/core/config").DefineConfig } + */ +export async function defineConfig(env) { + const plugin = await env.$import( + "https://cdn.jsdelivr.net/gh/samuelstroschein/inlang-plugin-json@1.1.1/dist/index.js" + ); + + const { default: standardLintRules } = await env.$import( + "https://cdn.jsdelivr.net/gh/inlang/standard-lint-rules@1.1.1/dist/index.js" + ); + + const pluginConfig = { + pathPattern: "./frontend/appflowy_flutter/assets/translations/{language}.json", + }; + + return { + referenceLanguage: "en", + languages: await plugin.getLanguages({ ...env, pluginConfig }), + readResources: (args) => plugin.readResources({ ...args, ...env, pluginConfig }), + writeResources: (args) => plugin.writeResources({ ...args, ...env, pluginConfig }), + lint: { + rules: [standardLintRules()], + }, + }; +} \ No newline at end of file