diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..51fd8ba6 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,13 @@ +project_id: '516668' +api_token_env: CROWDIN_PERSONAL_TOKEN +preserve_hierarchy: true +files: + # JSON translation files + - source: /i18n/en/**/* + translation: /i18n/%two_letters_code%/**/%original_file_name% + # Docs Markdown files + - source: /docs/**/* + translation: /i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name% + # Blog Markdown files + #- source: /blog/**/* + # translation: /i18n/%two_letters_code%/docusaurus-plugin-content-blog/**/%original_file_name% \ No newline at end of file diff --git a/docs/chat/accept-conversation.md b/docs/chat/accept-deny-new-conversation.md similarity index 55% rename from docs/chat/accept-conversation.md rename to docs/chat/accept-deny-new-conversation.md index 4a49e720..2c7dfb2c 100644 --- a/docs/chat/accept-conversation.md +++ b/docs/chat/accept-deny-new-conversation.md @@ -1,4 +1,8 @@ -# How to accept conversation +--- +sidebar_position: 2 +--- + +# How to accept or deny new conversation 1. Go to your profile 2. If someone added you a new name will appear and two options diff --git a/docs/chat/add-contact.md b/docs/chat/add-contact.md index e8459643..681d0679 100644 --- a/docs/chat/add-contact.md +++ b/docs/chat/add-contact.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 1 +--- + # How to add contacts 1. Go to your profile diff --git a/docs/chat/block-contact.md b/docs/chat/block-contact.md new file mode 100644 index 00000000..127a5630 --- /dev/null +++ b/docs/chat/block-contact.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 7 +--- + +# How to block contact + +1. On a chat window +2. Go to settings +3. Scroll down to block contact +4. Move the switch to block contact diff --git a/docs/chat/reply-to-message.md b/docs/chat/reply-to-message.md new file mode 100644 index 00000000..e8f60c88 --- /dev/null +++ b/docs/chat/reply-to-message.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 5 +--- + +# How to reply to a message + +1. Select a message you want to reply to +2. Pull a message right +3. Write an answer to the quoted message +4. Hit send \ No newline at end of file diff --git a/docs/chat/save-conversation-history.md b/docs/chat/save-conversation-history.md new file mode 100644 index 00000000..a910c934 --- /dev/null +++ b/docs/chat/save-conversation-history.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 4 +--- + +# How to save your conversation history + +By default, for privacy, Cwtch does not save conversation history between runs of the app. To enable history saving: + +1. On a chat window go to settings +2. Go to save history +3. Click the dropdown menu +4. Pick save history +5. Now your history will be saved \ No newline at end of file diff --git a/docs/chat/send-image.md b/docs/chat/send-image.md new file mode 100644 index 00000000..64d4e8d9 --- /dev/null +++ b/docs/chat/send-image.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 6 +--- + +# How to send an image + +Cwtch sends files in a confidential fashion. Currently it does not support showing sending progress, as we decided to err on the side of privacy and not have people share their download progress. + +*There is also currently an issue that shared files become unavailable after restarting Cwtch currently (May 2022)* + +1. On a chat window +2. Click on the attachment icon +3. Find the image you want to send +4. Confirm you want to send it \ No newline at end of file diff --git a/docs/chat/share-address-with-friends.md b/docs/chat/share-address-with-friends.md new file mode 100644 index 00000000..8c3b4a38 --- /dev/null +++ b/docs/chat/share-address-with-friends.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 3 +--- + +# How to send your address to friends + +1. Go to your profile +2. Click the copy address icon +3. Go to a conversation +4. Paste your address +5. Share with friend +6. DO NOT SHARE YOUR ADDRESS WITH PEOPLE YOU DON’T +TRUST \ No newline at end of file diff --git a/docs/chat/unblock-contact.md b/docs/chat/unblock-contact.md new file mode 100644 index 00000000..1fac4f37 --- /dev/null +++ b/docs/chat/unblock-contact.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 8 +--- + +# How to unblock contact + +1. In a chat +2. Go to settings +3. Scroll down to block contact +4. Move the switch to unblock contact \ No newline at end of file diff --git a/docs/contribute/_category_.json b/docs/contribute/_category_.json new file mode 100644 index 00000000..a32abe2e --- /dev/null +++ b/docs/contribute/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Contribute", + "position": 10, + "link": { + "type": "generated-index" + } +} \ No newline at end of file diff --git a/docs/contribute/translate.md b/docs/contribute/translate.md new file mode 100644 index 00000000..54cee0d6 --- /dev/null +++ b/docs/contribute/translate.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 2 +--- + +# Translate Cwtch + +If you would like to contribute translations to Cwtch the application or this handbook here is how + +## Cwtch Application + +The application is translated through [Lokalise](https://lokalise.com). +1. Sign up for an account on the site +2. Email [team@cwtch.im](mailto:team@cwtch.im) that would like to translate and the email address you signed up with. We will add you to the project + +## Cwtch User's Handbook + +The handbook is translated through [Crowdin](https://crowdin.com). +1. Sign up for an account on the site. +2. Go to the [cwtch-users-handbook](https://crowdin.com/project/cwtch-users-handbook) project and join. \ No newline at end of file diff --git a/docs/groups/_category_.json b/docs/groups/_category_.json new file mode 100644 index 00000000..cfac9190 --- /dev/null +++ b/docs/groups/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Groups", + "position": 4, + "link": { + "type": "generated-index" + } +} \ No newline at end of file diff --git a/docs/groups/accept-group-invite.md b/docs/groups/accept-group-invite.md new file mode 100644 index 00000000..3bf6099b --- /dev/null +++ b/docs/groups/accept-group-invite.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 5 +--- + +# How to accept a group request + +1. If a friend sends you a group request +2. Choose if you want or not to join this group +3. Now the group is on your contact list \ No newline at end of file diff --git a/docs/groups/create-group.md b/docs/groups/create-group.md new file mode 100644 index 00000000..8086a03e --- /dev/null +++ b/docs/groups/create-group.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 3 +--- + +# How to make a group + +1. On your contacts pane +2. Press on the plus action button +3. Press on Create Group +4. Name your Group +5. Press on Create \ No newline at end of file diff --git a/docs/groups/edit-group-name.md b/docs/groups/edit-group-name.md new file mode 100644 index 00000000..43f816d8 --- /dev/null +++ b/docs/groups/edit-group-name.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 7 +--- + +# How to edit a group name + +Group names are private to you, it will not be shared, it is your local name for the group. + +1. On the chat pane go to settings +2. Change the name of the group +3. Press the save button +4. Now your group has a new name \ No newline at end of file diff --git a/docs/groups/enable-experiment.md b/docs/groups/enable-experiment.md new file mode 100644 index 00000000..ab87d57b --- /dev/null +++ b/docs/groups/enable-experiment.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 2 +--- + +# Enable Groups Experiment + +Groups are currently an experimental feature in Cwtch so they are not enabled by default + +1. Go to Settings +2. Enable Experiments +3. Enable the Group experiment \ No newline at end of file diff --git a/docs/groups/leave-group.md b/docs/groups/leave-group.md new file mode 100644 index 00000000..2b2ba9f1 --- /dev/null +++ b/docs/groups/leave-group.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 6 +--- + +# How to leave group + +1. On the chat pane go to settings +2. Scroll down on the settings pane +3. Press on leave conversation +4. Confirm you want to leave \ No newline at end of file diff --git a/docs/groups/manage-known-servers.md b/docs/groups/manage-known-servers.md new file mode 100644 index 00000000..9cbf109e --- /dev/null +++ b/docs/groups/manage-known-servers.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 7 +--- + +# How to manage server + +Cwtch groups are hosted by untrusted servers. If you want to see the servers you know about, their status, and the groups hosted on them: + +1. On your contacts pane +2. Got ot the manage servers icon + +## Import locally hosted server + +1. To import a locally hosted server click on select local server +2. Select the server you want \ No newline at end of file diff --git a/docs/groups/send-invite.md b/docs/groups/send-invite.md new file mode 100644 index 00000000..f43f769f --- /dev/null +++ b/docs/groups/send-invite.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +--- + +# How to invite someone to a group + +1. Go to a chat with a friend +2. Press on the invite icon +3. Select the group you want to invite them to +4. Press Invite +5. You have sent an invite \ No newline at end of file diff --git a/docs/servers/_category_.json b/docs/servers/_category_.json new file mode 100644 index 00000000..d6264bc0 --- /dev/null +++ b/docs/servers/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Servers", + "position": 4, + "link": { + "type": "generated-index" + } +} \ No newline at end of file diff --git a/docs/servers/create-server.md b/docs/servers/create-server.md new file mode 100644 index 00000000..0fc5ffbc --- /dev/null +++ b/docs/servers/create-server.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 2 +--- + +# How to create a server + +1. Go to the server icon +2. Press the + action button to make a new server +3. Choose a name for your server +4. Select a password for your server +5. Click on “Add Server” \ No newline at end of file diff --git a/docs/servers/delete-server.md b/docs/servers/delete-server.md new file mode 100644 index 00000000..eec4df71 --- /dev/null +++ b/docs/servers/delete-server.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 4 +--- + +# How to delete server + +1. Go to the server Icon +2. Select the server you want to delete +3. Press the pencil icon +4. Scroll down and input your password +5. Press delete +6. Press really delete +7. Your server is deleted \ No newline at end of file diff --git a/docs/servers/edit-server.md b/docs/servers/edit-server.md new file mode 100644 index 00000000..e11c1dca --- /dev/null +++ b/docs/servers/edit-server.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 3 +--- + +# How to edit a server + +1. Go to the server icon +2. Select the server you want to edit +3. Press the pencil icon +4. Change the description/ or enable or disable the server +5. Click on save server \ No newline at end of file diff --git a/docs/servers/enable-experiment.md b/docs/servers/enable-experiment.md new file mode 100644 index 00000000..011e76af --- /dev/null +++ b/docs/servers/enable-experiment.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 2 +--- + +# Enable Servers Experiment + +**Server hosting is currently an experimental feature in Cwtch so it is not enabled by default.** + +1. Go to Settings +2. Enable Experiments +3. Enable the Server Hosting experiment +4. You will probably also want to enable the Group experiment if you want to participate on a group hosted on your server \ No newline at end of file diff --git a/docs/servers/introduction.md b/docs/servers/introduction.md new file mode 100644 index 00000000..e1675c84 --- /dev/null +++ b/docs/servers/introduction.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 1 +--- + +# Servers Introduction + +Cwtch contact to contact chat is fully peer to peer, which means if one peer is offline, you cannot chat, and there is no mechanism for multiple people to chat. + +To support group chat (and offline delivery) we have created untrusted Cwtch servers which can host messages for a group. The messages are encrypted with the group key, and fetch via ephemeral onions, so the server has no way to know what messages for what groups it might be holding, or who is accessing it. + +Currently running servers in the Cwtch app is only supported on the Desktop version as mobile devices' internet conection and environment is too unstable and unsuitable to running a server. diff --git a/docs/servers/share-key.md b/docs/servers/share-key.md new file mode 100644 index 00000000..13cd8009 --- /dev/null +++ b/docs/servers/share-key.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 5 +--- + +# How to copy your server keys + +Your server key bundle is the package of data a Cwtch app needs inorder to use a server. If you just want to make other Cwtch users aware of your server, you can share this with them. Then they will have the ability to create their own groups on the server. + +1. Go to the server Icon +2. Select the server you want +3. Use the copy address icon to copy the server keys +4. Don’t share the keys with people you don’t trust \ No newline at end of file diff --git a/docs/servers/unlock-server.md b/docs/servers/unlock-server.md new file mode 100644 index 00000000..f061b999 --- /dev/null +++ b/docs/servers/unlock-server.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 6 +--- + +# How to Unlock a server + +If you created your server with a password, it will need to be unlocked each time you restart the application. + +1. Go to the server Icon +2. Click on the pink unlock icon +3. Input the password of your server +4. Press Unlock \ No newline at end of file diff --git a/docs/settings/appearance/change-language.md b/docs/settings/appearance/change-language.md index 73e20fd1..a74a0dc7 100644 --- a/docs/settings/appearance/change-language.md +++ b/docs/settings/appearance/change-language.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 1 +--- + # Change Language 1. Press the settings Icon diff --git a/docs/settings/appearance/light-dark-mode.md b/docs/settings/appearance/light-dark-mode.md index a937c52d..c0c57481 100644 --- a/docs/settings/appearance/light-dark-mode.md +++ b/docs/settings/appearance/light-dark-mode.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 2 +--- + # Light/Dark and themes Breakdown 1. Press the setting icon diff --git a/docs/settings/appearance/streamer-mode.md b/docs/settings/appearance/streamer-mode.md index 0fd97b98..27309d9a 100644 --- a/docs/settings/appearance/streamer-mode.md +++ b/docs/settings/appearance/streamer-mode.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 4 +--- + # Streamer Mode 1. Press the settings icon diff --git a/docs/settings/appearance/ui-columns.md b/docs/settings/appearance/ui-columns.md index 2efde1bb..6cd27034 100644 --- a/docs/settings/appearance/ui-columns.md +++ b/docs/settings/appearance/ui-columns.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 3 +--- + # UI columns 1. Press the settings icon diff --git a/docusaurus.config.js b/docusaurus.config.js index 2c72dff3..97b93884 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -24,7 +24,7 @@ const config = { // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'fr', 'da', 'de', 'it', 'no', 'pl', 'ro', 'ru', 'es-ES', 'cy'], }, presets: [ @@ -70,6 +70,10 @@ const config = { label: 'Git', position: 'right', }, + { + type: 'localeDropdown', + position: 'right', + }, ], }, footer: { @@ -114,14 +118,15 @@ const config = { darkTheme: darkCodeTheme, }, }), - plugins: [ + /*plugins: [ [ require.resolve("@cmfcmf/docusaurus-search-local"), { // Options here + language: ["en", 'fr', 'da', 'de', 'it', 'no', 'ro', 'ru', 'es'], }, ], - ], + ],*/ }; diff --git a/i18n/en/code.json b/i18n/en/code.json new file mode 100644 index 00000000..2a0c7390 --- /dev/null +++ b/i18n/en/code.json @@ -0,0 +1,233 @@ +{ + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again when the page crashed" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages navigation", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Toggle the collapsible sidebar category '{label}'", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to heading", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + } +} diff --git a/i18n/en/docusaurus-plugin-content-blog/options.json b/i18n/en/docusaurus-plugin-content-blog/options.json new file mode 100644 index 00000000..9239ff70 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "Blog", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} diff --git a/i18n/en/docusaurus-plugin-content-docs/current.json b/i18n/en/docusaurus-plugin-content-docs/current.json new file mode 100644 index 00000000..117354e5 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,30 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.tutorialSidebar.category.Profiles": { + "message": "Profiles", + "description": "The label for category Profiles in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Chat": { + "message": "Chat", + "description": "The label for category Chat in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Settings": { + "message": "Settings", + "description": "The label for category Settings in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Appearance": { + "message": "Appearance", + "description": "The label for category Appearance in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Behaviour": { + "message": "Behaviour", + "description": "The label for category Behaviour in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Contribute": { + "message": "Contribute", + "description": "The label for category Contribute in sidebar tutorialSidebar" + } +} diff --git a/i18n/en/docusaurus-theme-classic/footer.json b/i18n/en/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000..8e935ee0 --- /dev/null +++ b/i18n/en/docusaurus-theme-classic/footer.json @@ -0,0 +1,34 @@ +{ + "link.title.Docs": { + "message": "Docs", + "description": "The title of the footer links column with title=Docs in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Tutorial": { + "message": "Tutorial", + "description": "The label of footer link with label=Tutorial linking to /docs/intro" + }, + "link.item.label.Twitter": { + "message": "Twitter", + "description": "The label of footer link with label=Twitter linking to https://twitter.com/cwtch_im" + }, + "link.item.label.Home": { + "message": "Home", + "description": "The label of footer link with label=Home linking to https://cwtch.im" + }, + "link.item.label.Git": { + "message": "Git", + "description": "The label of footer link with label=Git linking to https://git.openprivacy.ca/cwtch.im" + }, + "copyright": { + "message": "Copyright © 2022 My Project, Inc. Built with Docusaurus.", + "description": "The footer copyright" + } +} diff --git a/i18n/en/docusaurus-theme-classic/navbar.json b/i18n/en/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000..03a634f0 --- /dev/null +++ b/i18n/en/docusaurus-theme-classic/navbar.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "Cwtch Handbook", + "description": "The title in the navbar" + }, + "item.label.Cwtch Intro": { + "message": "Cwtch Intro", + "description": "Navbar item with label Cwtch Intro" + }, + "item.label.Git": { + "message": "Git", + "description": "Navbar item with label Git" + } +} diff --git a/package-lock.json b/package-lock.json index e7ddb314..1a7571cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@cmfcmf/docusaurus-search-local": "^0.10.0", + "@crowdin/cli": "^3.7.8", "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", @@ -1949,6 +1950,18 @@ "node": ">=0.1.90" } }, + "node_modules/@crowdin/cli": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.7.8.tgz", + "integrity": "sha512-DDA2ggfnYsfoprWmxNpZ5QOxO58RSsbFHHSi+558bqBJMag1z0RjSGSCriqfCQtvBnn2SIVnBsBOaw+HDWXF4w==", + "dependencies": { + "njre": "^0.2.0", + "shelljs": "^0.8.4" + }, + "bin": { + "crowdin": "jdeploy-bundle/jdeploy.js" + } + }, "node_modules/@docsearch/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz", @@ -4196,6 +4209,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4440,6 +4461,11 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -4593,6 +4619,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/command-exists-promise": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/command-exists-promise/-/command-exists-promise-2.0.2.tgz", + "integrity": "sha512-T6PB6vdFrwnHXg/I0kivM3DqaCGZLjjYSOe0a5WgFKcz1sOnmOeIjnhQPXVXX3QjVbLyTJ85lJkX6lUpukTzaA==", + "engines": { + "node": ">=6" + } + }, "node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -6008,6 +6042,14 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/feed": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", @@ -6360,6 +6402,14 @@ "node": ">=12" } }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, "node_modules/fs-monkey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", @@ -8142,6 +8192,39 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mrmime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", @@ -8191,6 +8274,20 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/njre": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/njre/-/njre-0.2.0.tgz", + "integrity": "sha512-+Wq8R6VmjK+jI8a9NdzfU6Vh50r3tjsdvl5KJE1OyHeH8I/nx5Ptm12qpO3qNUbstXuZfBDgDL0qQZw9JyjhMw==", + "dependencies": { + "command-exists-promise": "^2.0.2", + "node-fetch": "^2.5.0", + "tar": "^4.4.8", + "yauzl": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -8633,6 +8730,11 @@ "node": ">=8" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -11204,6 +11306,47 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/terser": { "version": "5.13.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", @@ -12821,6 +12964,15 @@ "node": ">= 6" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -14207,6 +14359,15 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "optional": true }, + "@crowdin/cli": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@crowdin/cli/-/cli-3.7.8.tgz", + "integrity": "sha512-DDA2ggfnYsfoprWmxNpZ5QOxO58RSsbFHHSi+558bqBJMag1z0RjSGSCriqfCQtvBnn2SIVnBsBOaw+HDWXF4w==", + "requires": { + "njre": "^0.2.0", + "shelljs": "^0.8.4" + } + }, "@docsearch/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz", @@ -15965,6 +16126,11 @@ "picocolors": "^1.0.0" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -16129,6 +16295,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -16244,6 +16415,11 @@ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" }, + "command-exists-promise": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/command-exists-promise/-/command-exists-promise-2.0.2.tgz", + "integrity": "sha512-T6PB6vdFrwnHXg/I0kivM3DqaCGZLjjYSOe0a5WgFKcz1sOnmOeIjnhQPXVXX3QjVbLyTJ85lJkX6lUpukTzaA==" + }, "commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -17276,6 +17452,14 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, "feed": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", @@ -17508,6 +17692,14 @@ "universalify": "^2.0.0" } }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, "fs-monkey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", @@ -18811,6 +19003,38 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, "mrmime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", @@ -18845,6 +19069,17 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "njre": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/njre/-/njre-0.2.0.tgz", + "integrity": "sha512-+Wq8R6VmjK+jI8a9NdzfU6Vh50r3tjsdvl5KJE1OyHeH8I/nx5Ptm12qpO3qNUbstXuZfBDgDL0qQZw9JyjhMw==", + "requires": { + "command-exists-promise": "^2.0.2", + "node-fetch": "^2.5.0", + "tar": "^4.4.8", + "yauzl": "^2.10.0" + } + }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -19163,6 +19398,11 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -21012,6 +21252,32 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, "terser": { "version": "5.13.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", @@ -22110,6 +22376,15 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index d02c75e8..34fae712 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,12 @@ "clear": "docusaurus clear", "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "write-heading-ids": "docusaurus write-heading-ids", + "crowdin": "crowdin" }, "dependencies": { "@cmfcmf/docusaurus-search-local": "^0.10.0", + "@crowdin/cli": "^3.7.8", "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22",