diff --git a/hugo.yaml b/hugo.yaml
index 9ddcc109d..ddf142d82 100644
--- a/hugo.yaml
+++ b/hugo.yaml
@@ -44,10 +44,66 @@ languages:
     title: Weights & Biases Documentation
     params:
       description: Weights & Biases Documentation Site
+    menus:
+      main:
+      - name: Guides
+        pageRef: /guides
+        weight: 1
+        identifier: guides-en
+      - name: Tutorials
+        pageRef: /tutorials
+        weight: 2
+        identifier: tutorials-en
+      - name: Reference
+        pageRef: /ref
+        weight: 3
+        identifier: reference-en
+      - name: Support
+        pageRef: /support
+        weight: 4
+        identifier: support-en
   ja:
     languageName: Japanese
+    contentDir: content/ja
+    menus:
+      main:
+      - name: Guides
+        pageRef: /guides
+        weight: 1
+        identifier: guides-ja
+      - name: Tutorials
+        pageRef: /tutorials
+        weight: 2
+        identifier: tutorials-ja
+      - name: Reference
+        pageRef: /ref
+        weight: 3
+        identifier: reference-ja
+      - name: Support
+        pageRef: /support
+        weight: 4
+        identifier: support-ja
   ko:
     languageName: Korean
+    contentDir: content/ko
+    menus:
+      main:
+      - name: Guides
+        pageRef: /guides
+        weight: 1
+        identifier: guides-ko
+      - name: Tutorials
+        pageRef: /tutorials
+        weight: 2
+        identifier: tutorials-ko
+      - name: Reference
+        pageRef: /ref
+        weight: 3
+        identifier: reference-ko
+      - name: Support
+        pageRef: /support
+        weight: 4
+        identifier: support-ko
 
 markup:
   tableOfContents:
diff --git a/reset-i18n-dirs.py b/reset-i18n-dirs.py
new file mode 100644
index 000000000..7e3bcf827
--- /dev/null
+++ b/reset-i18n-dirs.py
@@ -0,0 +1,160 @@
+import os
+import shutil
+import re
+import frontmatter
+
+def clean_directory(directory):
+    """Remove directory if it exists and create it fresh."""
+    if os.path.exists(directory):
+        shutil.rmtree(directory)
+    os.makedirs(directory)
+
+def get_menu_type(src_path):
+    """Determine the menu type based on the source path."""
+    if '/guides/' in src_path:
+        return 'default'
+    elif '/ref/' in src_path:
+        return 'reference'
+    elif '/launch/' in src_path:
+        return 'launch'
+    elif '/support/' in src_path:
+        return 'support'
+    elif '/tutorials/' in src_path:
+        return 'tutorials'
+    return None
+
+def get_identifier_from_path(dest_path):
+    """Generate an identifier using the full destination path after content/."""
+    # Split on content/ and take everything after it
+    parts = dest_path.split('content/')[1]
+    
+    # Remove file extension and convert path separators to hyphens
+    identifier = parts.replace('.md', '').replace('/', '-')
+    
+    return identifier
+
+def update_markdown_content(content, subdirectory):
+    """Update relref links in markdown content."""
+    def replace_relref(match):
+        full_match = match.group(0)
+        path_start = full_match.find('relref') + 6
+        path_end = full_match.rfind('>')
+        path_with_quotes = full_match[path_start:path_end].strip()
+        
+        # If the path includes 'content/', remove it
+        clean_path = path_with_quotes.replace('content/', '')
+        
+        # Create the new key-value format
+        clean_subdir = subdirectory.replace('content/', '')
+        return f'{{{{< relref path={clean_path} lang="{clean_subdir}" >}}}}'
+    
+    pattern = r'\{\{<\s*relref\s*"[^"]+"\s*>\}}'
+    return re.sub(pattern, replace_relref, content)
+
+def ensure_directory_exists(filepath):
+    """Create parent directories if they don't exist."""
+    directory = os.path.dirname(filepath)
+    if directory and not os.path.exists(directory):
+        os.makedirs(directory)
+
+def process_markdown_file(src_path, dest_path, subdirectory):
+    """Process a markdown file, updating front matter and content."""
+    with open(src_path, 'r', encoding='utf-8') as file:
+        post = frontmatter.load(file)
+        
+        # Get the menu type based on the source path
+        menu_type = get_menu_type(src_path)
+        
+        if menu_type:
+            # Generate identifier from destination path
+            identifier = get_identifier_from_path(dest_path)
+            
+            # Initialize menu if it doesn't exist
+            if 'menu' not in post:
+                post['menu'] = {}
+                
+            # Process both the section menu (default/reference/etc) and main menu if it exists
+            menus_to_process = [menu_type]
+            if 'main' in post.get('menu', {}):
+                menus_to_process.append('main')
+            
+            # Update each menu section
+            for menu_name in menus_to_process:
+                # Get existing menu section or create new one
+                menu_section = post['menu'].get(menu_name, {})
+                if not isinstance(menu_section, dict):
+                    menu_section = {}
+                
+                # Add/update the identifier while preserving other properties
+                menu_section['identifier'] = identifier
+                
+                # Update the menu section
+                post['menu'][menu_name] = menu_section
+        
+        # Update content
+        post.content = update_markdown_content(post.content, subdirectory)
+        
+        # Ensure parent directory exists before writing
+        ensure_directory_exists(dest_path)
+        
+        # Write the modified file
+        with open(dest_path, 'w', encoding='utf-8') as output:
+            output.write(frontmatter.dumps(post))
+
+def copy_and_process_directory(src, dest, subdirectory):
+    """Recursively copy directory and process markdown files."""
+    ensure_directory_exists(dest)
+    
+    for item in os.listdir(src):
+        src_path = os.path.join(src, item)
+        dest_path = os.path.join(dest, item)
+        
+        if os.path.isdir(src_path):
+            copy_and_process_directory(src_path, dest_path, subdirectory)
+        elif src_path.endswith('.md'):
+            process_markdown_file(src_path, dest_path, subdirectory)
+        else:
+            ensure_directory_exists(dest_path)
+            shutil.copy2(src_path, dest_path)
+
+def process_language(subdirectory):
+    """Process all content for a specific language subdirectory."""
+    items_to_copy = [
+        'content/guides',
+        'content/launch',
+        'content/ref',
+        'content/support',
+        'content/tutorials',
+        'content/_index.md'
+    ]
+    
+    # Clean and create target directory
+    clean_directory(subdirectory)
+    
+    # Process each item in the list
+    for item in items_to_copy:
+        src_path = item
+        # Remove 'content/' from the source path when constructing destination
+        dest_path = os.path.join(subdirectory, item.replace('content/', '', 1))
+        
+        if os.path.isdir(src_path):
+            copy_and_process_directory(src_path, dest_path, subdirectory)
+        elif src_path.endswith('.md'):
+            process_markdown_file(src_path, dest_path, subdirectory)
+
+def main():
+    # List of target language directories
+    language_dirs = ['content/ja', 'content/ko']
+    
+    print("Starting i18n seed process...")
+    
+    # Process each language
+    for lang_dir in language_dirs:
+        print(f"\nProcessing {lang_dir}...")
+        process_language(lang_dir)
+        print(f"Completed processing {lang_dir}")
+    
+    print("\ni18n re-seed process complete!")
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file