* fix redirect language code prefixes
* rename: cn -> zh, jp -> ja
* remove hardcoded ja / zh references
* remove hardcoded 'english' references
* renamed variable names and dict keys to language agnostic names
* fix: add missing language helper methods to PRAnalyzer
- Add get_language_directory() method
- Initialize source_language and target_languages from config
- Fixes AttributeError when generating mixed PR errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
* Refactor/language codes (#240)
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: update workflow files to use 'source' instead of 'english'
After refactoring the PR analyzer to use 'source' for source language
PRs (instead of hardcoded 'english'), the workflow files need to match.
Changes:
- sync_docs_analyze.yml: pr_type == 'source' (was 'english')
- sync_docs_update.yml: PR_TYPE != 'source' check
- Updated all comments from "English" to "source language"
- Updated all pr_type values in JSON from "english" to "source"
This ensures the workflows trigger correctly with the refactored
config-driven language system.
Related: language code refactoring (cn/jp → zh/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix/workflow source language references (#245)
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
* fix: update workflow files to use 'source' instead of 'english'
After refactoring the PR analyzer to use 'source' for source language
PRs (instead of hardcoded 'english'), the workflow files need to match.
Changes:
- sync_docs_analyze.yml: pr_type == 'source' (was 'english')
- sync_docs_update.yml: PR_TYPE != 'source' check
- Updated all comments from "English" to "source language"
- Updated all pr_type values in JSON from "english" to "source"
This ensures the workflows trigger correctly with the refactored
config-driven language system.
Related: language code refactoring (cn/jp → zh/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix
* fix docs.json language codes
* rename previous version docs: cn -> zh, jp -> ja
* rm duplicate redirect entires
---------
Co-authored-by: Claude <noreply@anthropic.com>
Add tools for comparing translation quality between different models
(e.g., Sonnet vs Opus) or prompt variations. Useful for evaluating
translation improvements before deploying changes.
- run_test.py: Test runner with Dify API streaming
- compare.py: Generate similarity reports between variants
- Example spec and documentation included
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
* fix: new version docs about node redirect supplement
* fix: replace some uncorrect destination
* docs: improve redirect just like main branch
---------
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
* fix redirect language code prefixes
* fix: don't close sync PR when original is merged
Only close sync PR when original is closed without merging.
When original is merged, leave sync PR open for independent review.
* fix redirect language code prefixes
* fix: Allow stale branches to trigger auto-sync without false mixed-content errors
Changes the PR analysis to use merge-base instead of PR base commit for
comparison. This allows stale branches to trigger translation automation
without being falsely flagged as "mixed content" PRs.
**Problem:**
- When a PR branch becomes stale (main moves forward after branch creation)
- Old approach compared PR_BASE (main's current HEAD) vs PR_HEAD
- This included unrelated changes from main as "part of the PR"
- Caused false "mixed content" errors (e.g., PR #555)
**Solution:**
- Use merge-base to find where branch diverged from main
- Compare MERGE_BASE vs PR_HEAD (only actual PR changes)
- Ignore unrelated changes that landed on main after branch creation
**Benefits:**
- ✅ Better contributor experience (no manual branch updates needed)
- ✅ Accurate PR categorization (no false positives)
- ✅ Faster automation (no waiting for updates)
- ✅ Works with concurrent PRs
**Example (PR #555):**
- OLD: Detected 4 files (en + cn + jp) → "mixed content" ❌
- NEW: Detected 1 file (en only) → "english" ✅🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Correct external knowledge api documentation link
* Found and fixed another link
Found and fixed another instance of the same wrong link while reviewing @invzhi's fix in pr#500
---------
Co-authored-by: Riskey <36894937+RiskeyL@users.noreply.github.com>
* draft
* draft
* draft
* refine dev docs
* almost
* update
* remove sys.file and sys.query; add sys.timestamp
* update the end node to output
* modify the introduction section of variable
* fix typo
* adjust image size
* remove unnecessary list
* feedback fix
* remove example
* feedback fix & add en/ja dev docs
* correct description
* fix typos
* replace UI text
* refinements & add zh-ja translation
* feedback fixes
* fix punctuation
* refine heading-reference
* typo
* adjust casing & remove sys.timestamp from chatflow
* Docs tools: 2 succeeded, some failed
Rename operation failed: - Lang 'zh': File 'dify-docs/plugin-dev-zh/0211-getting-started-dify-tool.mdx' - Renaming error: Unexpected error: 'str' object has no attribute 'get'
- Lang 'zh': File 'dify-docs/plugin-dev-zh/0222-datasource-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'zh': File 'dify-docs/plugin-dev-zh/0222-tool-oauth.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'zh': File 'dify-docs/plugin-dev-zh/0222-trigger-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'en': File 'dify-docs/plugin-dev-en/0211-getting-started-dify-tool.mdx' - Renaming error: Unexpected error: 'str' object has no attribute 'get'
- Lang 'en': File 'dify-docs/plugin-dev-en/0222-datasource-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'en': File 'dify-docs/plugin-dev-en/0222-tool-oauth.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'en': File 'dify-docs/plugin-dev-en/0222-trigger-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'ja': File 'dify-docs/plugin-dev-ja/0211-getting-started-dify-tool.mdx' - Renaming error: Unexpected error: 'str' object has no attribute 'get'
- Lang 'ja': File 'dify-docs/plugin-dev-ja/0222-datasource-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
- Lang 'ja': File 'dify-docs/plugin-dev-ja/0222-trigger-plugin.mdx' - Skipped (non-compliant):
Missing/empty critical frontmatter fields for renaming: dimensions.type.primary, dimensions.type.detail, dimensions.level, standard_title, language (expected for metadata, though not used in filename suffix anymore).
---------
Co-authored-by: Riskey <riskey47@dify.ai>
Co-authored-by: alterxyz <88554920+alterxyz@users.noreply.github.com>