diff --git a/docs/docs/intro.md b/docs/docs/intro.md
index c7fefd59..e5014477 100644
--- a/docs/docs/intro.md
+++ b/docs/docs/intro.md
@@ -52,7 +52,7 @@ For gimmicks involving animators, Modular Avatar has a `Merge Animator` componen
![img_4.png](img_4.png)
This component will merge the specified animator controller into the corresponding Avatar 3.0 playable layer.
-If `Delete Attached Avatar` is enabled, any animator on the same gameobject will also be deleted (having such an
+If `Delete Attached Animator` is enabled, any animator on the same gameobject will also be deleted (having such an
animator around can be handy for editing animations).
In order to ease editing, animations on a merged animator should have their clips created based off of the location of
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 405e3e08..378f8d10 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -53,7 +53,7 @@ const config = {
navbar: {
title: 'Modular Avatar documentation',
logo: {
- alt: 'My Site Logo',
+ alt: 'Logo',
src: 'img/logo.svg',
},
items: [
diff --git a/docs/i18n/en/code.json b/docs/i18n/en/code.json
new file mode 100644
index 00000000..0e8e33cb
--- /dev/null
+++ b/docs/i18n/en/code.json
@@ -0,0 +1,287 @@
+{
+ "Modular Avatar": {
+ "message": "Modular Avatar"
+ },
+ "Drag-and-Drop Avatar Assembly": {
+ "message": "Drag-and-Drop Avatar Assembly"
+ },
+ "Drag and Drop assembly": {
+ "message": "Drag and Drop assembly"
+ },
+ "Organize your animators": {
+ "message": "Organize your animators"
+ },
+ "Perfect for prefabs": {
+ "message": "Perfect for prefabs"
+ },
+ "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.admonition.note": {
+ "message": "note",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "tip",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.danger": {
+ "message": "danger",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "info",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.caution": {
+ "message": "caution",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "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.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.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.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.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "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.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
+ "message": "Toggle the collapsible sidebar category '{label}'",
+ "description": "The ARIA label to toggle the collapsible sidebar category"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Languages",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "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.readMoreLabel": {
+ "message": "Read more about {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "On this page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "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.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"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ },
+ "Documentation": {
+ "message": "Documentation"
+ },
+ "Download": {
+ "message": "Download"
+ },
+ "Modular avatar merges components at build time. Never again will you forget to click 'install' or 'uninstall' when editing your avatar!": {
+ "message": "Modular avatar merges components at build time. Never again will you forget to click 'install' or 'uninstall' when editing your avatar!"
+ },
+ "Split your avatar's FX animator into multiple sub-animators, and merge at runtime. Keep the animation edit dropdown tidy!": {
+ "message": "Split your avatar's FX animator into multiple sub-animators, and merge at runtime. Keep the animation edit dropdown tidy!"
+ },
+ "Embed modular avatar components in your prefabs to make installation a breeze!": {
+ "message": "Embed modular avatar components in your prefabs to make installation a breeze!"
+ }
+}
diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current.json b/docs/i18n/en/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000..dd30528d
--- /dev/null
+++ b/docs/i18n/en/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,6 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ }
+}
diff --git a/docs/i18n/en/docusaurus-theme-classic/footer.json b/docs/i18n/en/docusaurus-theme-classic/footer.json
new file mode 100644
index 00000000..c31fa3d9
--- /dev/null
+++ b/docs/i18n/en/docusaurus-theme-classic/footer.json
@@ -0,0 +1,14 @@
+{
+ "link.item.label.Documentation": {
+ "message": "Documentation",
+ "description": "The label of footer link with label=Documentation linking to /docs/intro"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/bdunderscore/modular-avatar"
+ },
+ "copyright": {
+ "message": "Copyright © 2022 bd_. Built with Docusaurus.",
+ "description": "The footer copyright"
+ }
+}
diff --git a/docs/i18n/en/docusaurus-theme-classic/navbar.json b/docs/i18n/en/docusaurus-theme-classic/navbar.json
new file mode 100644
index 00000000..d9f45dce
--- /dev/null
+++ b/docs/i18n/en/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Modular Avatar documentation",
+ "description": "The title in the navbar"
+ },
+ "item.label.Docs": {
+ "message": "Docs",
+ "description": "Navbar item with label Docs"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ }
+}
diff --git a/docs/i18n/ja/code.json b/docs/i18n/ja/code.json
new file mode 100644
index 00000000..65b74ff1
--- /dev/null
+++ b/docs/i18n/ja/code.json
@@ -0,0 +1,287 @@
+{
+ "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.admonition.note": {
+ "message": "note",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "tip",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.danger": {
+ "message": "danger",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "info",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.caution": {
+ "message": "caution",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "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.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.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.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.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "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.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
+ "message": "Toggle the collapsible sidebar category '{label}'",
+ "description": "The ARIA label to toggle the collapsible sidebar category"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Languages",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "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.readMoreLabel": {
+ "message": "Read more about {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "On this page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "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.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"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ },
+ "Documentation": {
+ "message": "ドキュメンテーション"
+ },
+ "Download": {
+ "message": "ダウンロード"
+ },
+ "Modular Avatar": {
+ "message": "モデュラーアバター"
+ },
+ "Drag-and-Drop Avatar Assembly": {
+ "message": "ドラッグアンドドロップでアバター組み立て"
+ },
+ "Drag and Drop assembly": {
+ "message": "ドラッグアンドドロップでアバター組み立て"
+ },
+ "Organize your animators": {
+ "message": "アニメーターを整理整頓に"
+ },
+ "Perfect for prefabs": {
+ "message": "プレハブに最適"
+ },
+ "Modular avatar merges components at build time. Never again will you forget to click 'install' or 'uninstall' when editing your avatar!": {
+ "message": "モデュラーアバターはビルド時にコンポーネントを統合します。「インスタンス」や「アンインストール」のクリック忘れはもうありません!"
+ },
+ "Split your avatar's FX animator into multiple sub-animators, and merge at runtime. Keep the animation edit dropdown tidy!": {
+ "message": "アバターのFXアニメーター等を分割し、実行時に統合しよう。アニメーションウィンドウの選択ドロップダウンを綺麗にしましょう!"
+ },
+ "Embed modular avatar components in your prefabs to make installation a breeze!": {
+ "message": "モデュラーアバターのコンポーネントをプレハブに入れればインストールが楽ちん!"
+ }
+}
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current.json b/docs/i18n/ja/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000..dd30528d
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,6 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ }
+}
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img.png
new file mode 100644
index 00000000..6922283b
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_1.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_1.png
new file mode 100644
index 00000000..6922283b
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_1.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_2.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_2.png
new file mode 100644
index 00000000..fe009307
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_2.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_3.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_3.png
new file mode 100644
index 00000000..1c1d9589
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_3.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_4.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_4.png
new file mode 100644
index 00000000..433770de
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_4.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_5.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_5.png
new file mode 100644
index 00000000..8cf941f4
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_5.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_6.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_6.png
new file mode 100644
index 00000000..c588dd6c
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_6.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_7.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_7.png
new file mode 100644
index 00000000..2d30729e
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_7.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_merge_armature.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_merge_armature.png
new file mode 100644
index 00000000..6922283b
Binary files /dev/null and b/docs/i18n/ja/docusaurus-plugin-content-docs/current/img_merge_armature.png differ
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/intro.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/intro.md
new file mode 100644
index 00000000..1efbf799
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/intro.md
@@ -0,0 +1,83 @@
+---
+sidebar_position: 1
+---
+
+# モデュラーアバター
+
+モデュラーアバターは、アバター設定を分割したり、アバター用ギミックや衣装を配布するための**非破壊的な**ツールキットです。
+モデュラーアバターを使えば、新しい衣装やギミックの導入はドラッグアンドドロップで楽ちんです!
+
+モデュラーアバターは現在以下の機能があります。
+
+* 衣装導入でよくやる、プレハブのアーマチュアを親のアバターに統合すること。この過程で新規生成されるボーンを最小限にして、できる限り既存のボーンを使いまわします。
+* 部分的なアニメーターを親に統合することで、様々のギミックの実装を簡単にします。
+
+## 衣装等の統合
+
+![img_1.png](img_1.png)
+
+衣装のアーマチュアに`Modular Avatar Merge Armature`を着けることで、ビルドやプレイ時に自動的に親のアバターに統合します。結果は以下のようになります。
+
+![img_3.png](img_3.png)
+
+衣装で追加される新規ボーンのみが追加されているのがお判りでしょう。
+
+`Merge Armature`のスクリプトは、自動的に`Merge Target`下に、自分についているボーンとその子に該当するボーンを探し当てます。
+自分がついている方のボーンは、`Prefix`で始まり、`Suffix`で終わると仮定し、その補正も行います。該当するオブジェクトが見つからない場合、
+アバターに新規オブジェクトとして追加します(スカートやリボン等のボーンには便利です)
+
+衣装のON/OFFは親プレハブのON/OFFだけで済みます。そのために、PhysBonesなどのコンポーネントは統合先に移動せずに、
+元の位置から統合したボーンと連動するように設定されます。PhysBonesやContactの場合は、`Root Transform`が統合先の該当アーマチュアボーンに設定されます。
+そのほかのコンポーネントの場合は、必要に応じて`Parent Constrant`が生成されます。
+
+統合の過程で、本来のアバターのアーマチュアに当てれるよう、Skinned Meshの処理(BindPose再計算)が行われます。異なる3Dソフトで作られたアバターと衣装は
+これによって無事に統合できるようになります。
+
+微調整が必要の場合は、統合前のアーマチュアを調整することができます。`Locked`のオプションを外せば、ワールド位置が保持されます
+(親アバターの該当ボーンの中にボーンが配置されるような挙動になります)
+
+## 複雑なギミックの統合
+
+アニメーターを含んだギミックのためには、`Merge Animator`コンポーネントもあります。
+
+![img_4.png](img_4.png)
+
+このコンポーネントを着けることで、指定したアニメーターコントローラーが該当するplayable layerに統合されます。
+また、`Delete Attached Animator`が有効の場合、同じゲームオブジェクトに付けられたアニメーターが削除されます。
+(残しておくとアニメーション編集が楽なので)
+
+編集しやすくするため、統合されるアニメーターのアニメションは統合前の位置でアニメーションクリップを作ってください。
+つまり、`Merge Animator`スクリプトまでのパスを指定する必要はなく、その子のパスだけで済みます。
+
+![img_5.png](img_5.png)
+
+Unityの「録画モード」で、同じゲームオブジェクトに付けられるアニメーターでアニメーションクリップを作れば、自動的にいい感じになるはずです。
+
+### アバターのどこかにオブジェクトを配置
+
+コンタクトなど、ヒエラルキーの別の位置にオブジェクトを配置する必要がある場合があります。`Merge Armature`を使ってもいいですが、ボーン名や位置など
+を合わせる必要があって、どのアバターでも適用できるギミックには最適解ではありません。
+
+そのかわりに`Modular Avatar Proxy Bone`を使いましょう。このコンポーネントを付けることで、該当Transformが指定したボーンの位置や姿勢に連動するようになります。
+
+![img_6.png](img_6.png)
+
+追尾したいトランスフォームを`Target`にドラッグアンドドロップをすれば、後は自動的に設定されます。
+
+ビルド時に、このProxy Boneのオブジェクトが実際のボーンの下に配備され、アニメーション参照がそれに応じて調整されます。
+
+### ヒューマノイドボーンのアニメーション
+
+通常のヒューマノイドアニメーションは特に特別な設定をしなくても統合アニメーターで使えます。
+
+### 非ヒューマノイドボーンのアニメーション
+
+ケモミミなど非ヒューマノイドボーンをアニメーションするときは、少し特別な設定が必要です。
+Lockedが有効の状態の`Modular Avatar Merge Armature`コンポーネントを使いましょう。
+
+![img_7.png](img_7.png)
+
+Lockedが有効だと、元のボーンと統合ボーンが連動して動きます。つまりはアニメーションを作るときは統合前のプロクシーボーンを動かせば、
+該当するアバターボーンも動くからやっていることが分かりやすいです。
+
+ビルド時はこのプロクシーボーンが親アバターに統合されるので、パフォーマンスランクに関与しません。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-theme-classic/footer.json b/docs/i18n/ja/docusaurus-theme-classic/footer.json
new file mode 100644
index 00000000..c31fa3d9
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-theme-classic/footer.json
@@ -0,0 +1,14 @@
+{
+ "link.item.label.Documentation": {
+ "message": "Documentation",
+ "description": "The label of footer link with label=Documentation linking to /docs/intro"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/bdunderscore/modular-avatar"
+ },
+ "copyright": {
+ "message": "Copyright © 2022 bd_. Built with Docusaurus.",
+ "description": "The footer copyright"
+ }
+}
diff --git a/docs/i18n/ja/docusaurus-theme-classic/navbar.json b/docs/i18n/ja/docusaurus-theme-classic/navbar.json
new file mode 100644
index 00000000..f6cfdd48
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "モデュラーアバタードキュメンテーション",
+ "description": "The title in the navbar"
+ },
+ "item.label.Docs": {
+ "message": "Docs",
+ "description": "Navbar item with label Docs"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ }
+}
diff --git a/docs/ja/docs/intro.md b/docs/ja/docs/intro.md
deleted file mode 100644
index 8a2e69d9..00000000
--- a/docs/ja/docs/intro.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-sidebar_position: 1
----
-
-# Tutorial Intro
-
-Let's discover **Docusaurus in less than 5 minutes**.
-
-## Getting Started
-
-Get started by **creating a new site**.
-
-Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
-
-### What you'll need
-
-- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
- - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
-
-## Generate a new site
-
-Generate a new Docusaurus site using the **classic template**.
-
-The classic template will automatically be added to your project after you run the command:
-
-```bash
-npm init docusaurus@latest my-website classic
-```
-
-You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
-
-The command also installs all necessary dependencies you need to run Docusaurus.
-
-## Start your site
-
-Run the development server:
-
-```bash
-cd my-website
-npm run start
-```
-
-The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
-
-The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
-
-Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
diff --git a/docs/ja/docs/tutorial-basics/_category_.json b/docs/ja/docs/tutorial-basics/_category_.json
deleted file mode 100644
index 2e6db55b..00000000
--- a/docs/ja/docs/tutorial-basics/_category_.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "label": "Tutorial - Basics",
- "position": 2,
- "link": {
- "type": "generated-index",
- "description": "5 minutes to learn the most important Docusaurus concepts."
- }
-}
diff --git a/docs/ja/docs/tutorial-basics/congratulations.md b/docs/ja/docs/tutorial-basics/congratulations.md
deleted file mode 100644
index 9ef99bba..00000000
--- a/docs/ja/docs/tutorial-basics/congratulations.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-sidebar_position: 6
----
-
-# Congratulations!
-
-You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
-
-Docusaurus has **much more to offer**!
-
-Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
-
-Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
-
-## What's next?
-
-- Read the [official documentation](https://docusaurus.io/).
-- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
-- Add a [search bar](https://docusaurus.io/docs/search)
-- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
-- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
diff --git a/docs/ja/docs/tutorial-basics/create-a-blog-post.md b/docs/ja/docs/tutorial-basics/create-a-blog-post.md
deleted file mode 100644
index ea472bba..00000000
--- a/docs/ja/docs/tutorial-basics/create-a-blog-post.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-sidebar_position: 3
----
-
-# Create a Blog Post
-
-Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
-
-## Create your first Post
-
-Create a file at `blog/2021-02-28-greetings.md`:
-
-```md title="blog/2021-02-28-greetings.md"
----
-slug: greetings
-title: Greetings!
-authors:
- - name: Joel Marcey
- title: Co-creator of Docusaurus 1
- url: https://github.com/JoelMarcey
- image_url: https://github.com/JoelMarcey.png
- - name: Sébastien Lorber
- title: Docusaurus maintainer
- url: https://sebastienlorber.com
- image_url: https://github.com/slorber.png
-tags: [greetings]
----
-
-Congratulations, you have made your first post!
-
-Feel free to play around and edit this post as much you like.
-```
-
-A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
diff --git a/docs/ja/docs/tutorial-basics/create-a-document.md b/docs/ja/docs/tutorial-basics/create-a-document.md
deleted file mode 100644
index 3c92695c..00000000
--- a/docs/ja/docs/tutorial-basics/create-a-document.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-sidebar_position: 2
----
-
-# Create a Document
-
-Documents are **groups of pages** connected through:
-
-- a **sidebar**
-- **previous/next navigation**
-- **versioning**
-
-## Create your first Doc
-
-Create a Markdown file at `docs/hello.md`:
-
-```md title="docs/hello.md"
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
-
-## Configure the Sidebar
-
-Docusaurus automatically **creates a sidebar** from the `docs` folder.
-
-Add metadata to customize the sidebar label and position:
-
-```md title="docs/hello.md" {1-4}
----
-sidebar_label: 'Hi!'
-sidebar_position: 3
----
-
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-It is also possible to create your sidebar explicitly in `sidebars.js`:
-
-```js title="sidebars.js"
-module.exports = {
- tutorialSidebar: [
- {
- type: 'category',
- label: 'Tutorial',
- // highlight-next-line
- items: ['hello'],
- },
- ],
-};
-```
diff --git a/docs/ja/docs/tutorial-basics/create-a-page.md b/docs/ja/docs/tutorial-basics/create-a-page.md
deleted file mode 100644
index 20e2ac30..00000000
--- a/docs/ja/docs/tutorial-basics/create-a-page.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 1
----
-
-# Create a Page
-
-Add **Markdown or React** files to `src/pages` to create a **standalone page**:
-
-- `src/pages/index.js` → `localhost:3000/`
-- `src/pages/foo.md` → `localhost:3000/foo`
-- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
-
-## Create your first React Page
-
-Create a file at `src/pages/my-react-page.js`:
-
-```jsx title="src/pages/my-react-page.js"
-import React from 'react';
-import Layout from '@theme/Layout';
-
-export default function MyReactPage() {
- return (
- This is a React pageMy React page
-
docs
directory.
- >
- ),
- },
- {
- title: 'Powered by React',
- Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
- description: (
- <>
- Extend or customize your website layout by reusing React. Docusaurus can
- be extended while reusing the same header and footer.
- >
- ),
- },
-];
-
-function Feature({title, Svg, description}: FeatureItem) {
- return (
- {description}
-{siteConfig.tagline}
-{siteConfig.tagline}
+
+