48 Commits

Author SHA1 Message Date
Chenhe Gu
61b37d88fc Fix stale PR translation revert issue (#630)
* Fix stale PR translation revert issue

When PR A is created before PR B but PR B merges first, the translation
workflow for PR A was reverting all of PR B's changes. This happened because
the translation workflow used PR A's working directory state (which is a
snapshot from before PR B existed) rather than applying only PR A's changes.

Root cause:
- setup_translation_branch() for new branches did:
  checkout -b branch → reset --soft origin/main → reset
  This kept PR's working directory which could be stale

- For incremental branches, merge_docs_json_for_incremental_update() took
  the English section from PR HEAD, which was also stale for old PRs

Fix:
- For NEW branches: Create branch directly from origin/main (not from PR's
  working directory). This ensures we start with the latest state including
  all changes from PRs merged after this PR was created.

- For EXISTING branches: Merge main's docs.json structure with our
  translations (instead of taking EN section from stale PR)

- For BOTH: Selectively checkout only the files that the PR actually changed
  from PR's head, rather than bringing in the entire working directory.
  This prevents overwriting files from other PRs.

Example issue (PR #593):
- PR #593 only added one file
- Translation PR #611 tried to delete 11 files and revert massive docs.json changes
- This was because it used PR #593's stale state from before other PRs merged

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix: Use PR's docs.json for finding file positions in navigation

The initial fix had a side effect: since we start from main's docs.json,
and PR's new files aren't in main's English section yet, sync_docs_json_incremental()
couldn't find where to place new files in the translation navigation.

Fix: Add `reference_sha` parameter to sync_docs_json_incremental() that loads
PR's docs.json for finding file positions, while still modifying main's
translation sections. This ensures:
1. Main's docs.json structure is preserved (no reverts)
2. New files are found in PR's docs.json
3. Translations are added at the correct positions

This also removes the unused _apply_pr_english_section_to_main() method.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix EN section not updated when using reference_sha

When the translation branch starts from main, the PR's docs.json
structural changes (new file entries in EN section) were not being
incorporated. This caused the translation PR to have mismatched
navigation entries.

The fix now also updates the EN section of the working directory's
docs.json when processing added files found in the reference
docs.json (from the PR).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Also remove deleted files from EN section in stale PR scenario

When processing deleted files, the sync now also removes them from the
EN section of docs.json. This is needed when the translation branch
starts from main, which may still have the deleted file entries.

Verified with comprehensive local testing covering 10 scenarios:
- Basic stale PR, multiple files, modifications, deletions
- Nested groups, new dropdowns, mixed operations
- Backward compatibility, incremental syncs, structure changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:46:11 -08:00
Chenhe Gu
61466c3f45 support configuring ignored files in auto sync (#629)
* Add ignore_files config to exclude specific files from translation

Adds ability to specify source language files that should not be translated:
- New `ignore_files` array in config.json
- Validation ensures paths start with source dir, have valid extension, no traversal
- Filtering applied in PRAnalyzer.categorize_files() and SyncPlanGenerator.generate_sync_plan()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* update config

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 15:45:28 -08:00
Chenhe Gu
f5aacb1377 improved local auto-sync script (#592)
* move files & renames

* rename files and doc entries

* sync develop plugin files

* update group label translations

* some cleanups

* update configs

* update links

* add remote debug doc

* delete redundant slashes and unnecessary notes

* update ja and zh links

* add script to translate locally

* update

* update

---------

Co-authored-by: Riskey <riskey47@dify.ai>
2025-12-12 10:47:46 +08:00
Riskey
60ef6820ff Revert "Auto translate works (#597)" (#609)
This reverts commit 809fc7f5eb.

Co-authored-by: Riskey <riskey47@dify.ai>
2025-12-11 16:06:51 +08:00
Alter-xyz
809fc7f5eb Auto translate works (#597)
* feat: init translation prompts from Dify workflow

Add translation prompt templates used by Dify workflow:
- 1.md: New document translation
- 2.md: Update existing translation
- 3.md: Update with diff/checklist

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: add URL localization rule to prompt 1, fix lang codes in prompt 3

- prompt 1.md: Add Rule 3 URL Localization (was missing, causing /en/ URLs to not be mapped)
- prompt 3.md: Fix language code comments (cn/jp → zh/ja to match actual folder structure)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: add README for translation prompts

Document prompt file mapping to Dify workflow nodes and testing workflow.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: move prompts to tools/translate/, add testing docs

- Move prompt templates to tools/translate/prompt/ (closer to translation code)
- Add prompt testing workflow to translate-test-dify/README.md
- Document prompt-to-workflow mapping and URL localization rule

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 15:34:46 +08:00
Chenhe Gu
f1f025b75d consolidate plugin dev docs into main structure (#581)
* move files & renames

* rename files and doc entries

* sync develop plugin files

* update group label translations

* some cleanups

* update configs

* update links

* add remote debug doc

* delete redundant slashes and unnecessary notes

* update ja and zh links

---------

Co-authored-by: Riskey <riskey47@dify.ai>
2025-12-04 16:28:47 +08:00
Chenhe Gu
767397a9de changed language codes: cn -> zh, jp -> ja. with other supporting structural changes (#565)
* 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>
2025-11-28 04:00:02 -08:00
Alter-xyz
4339f79a55 feat: add translation A/B testing framework (#564)
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>
2025-11-28 16:02:13 +08:00
Chenhe Gu
08e9e11c90 Replace main with revamp (#547) 2025-11-26 04:46:31 -08:00
Chenhe Gu
d9fb3dc2b1 remove general docs from footer addition (#498) 2025-10-28 15:34:56 -07:00
Alter-xyz
e66cc64d89 feat: github build-in issues template redirect 2025-07-16 16:40:40 +08:00
AllenWriter
0f218b29df Fix: modify the page's automatic contribution feature 2025-06-03 11:06:43 +08:00
AllenWriter
ec34e552c8 Docs: fix error url 2025-05-29 11:21:19 +08:00
AllenWriter
d29f5f9b8a Merge branch 'main' into docs/fix-plugin-docs 2025-05-23 11:18:25 +08:00
Alter-xyz
a4948c974b Update README.md 2025-05-23 11:16:37 +08:00
AllenWriter
06d73584d1 Fix: remove suffix .zh 2025-05-23 11:12:35 +08:00
Alter-xyz
8f158f547a chore: tools readme 2025-05-22 18:26:24 +08:00
Alter-xyz
3b0690f9b2 updates
and test action script
2025-05-19 21:58:24 +08:00
Alter-xyz
573a8a4df1 fix: typo 2025-05-19 16:08:23 +08:00
AllenWriter
e629382c63 Feat: update docs url 2025-05-19 14:58:56 +08:00
AllenWriter
bbc257d662 Feat: update docs url 2025-05-19 14:52:31 +08:00
Alter-xyz
829a76c67f enable update reference 2025-05-19 10:57:11 +08:00
Alter-xyz
8fb0738a8f chore: format matching 2025-05-19 10:37:03 +08:00
Alter-xyz
6cb4c072da feat: update references switch
default off
2025-05-18 17:51:05 +08:00
Alter-xyz
3dca175795 fix: suffix 2025-05-18 16:54:31 +08:00
Alter-xyz
cf8c1e52fc chore: typo
remove test
2025-05-18 00:43:55 +08:00
Alter-xyz
2ca78ac8e9 fix: git message 2025-05-18 00:20:13 +08:00
Alter-xyz
f8da9ed2f8 fix: git message 2025-05-18 00:11:57 +08:00
Alter-xyz
fb3ade9d72 feat: just one 2025-05-17 23:51:16 +08:00
Alter-xyz
281ee8b0f6 fix: sys.exit 2025-05-17 23:36:09 +08:00
Alter-xyz
f9092f6d7b fix and test 2025-05-17 23:24:32 +08:00
Alter-xyz
868311e1ea test 2025-05-17 23:18:46 +08:00
Alter-xyz
af71d8af24 feat: action 2025-05-17 23:14:41 +08:00
Alter-xyz
7679eb4b29 chore: tools update 2025-05-17 22:16:47 +08:00
Alter-xyz
10f1f354db feat: auto fix reference 2025-05-17 20:30:38 +08:00
Alter-xyz
aa5a0807e6 feat: deprecation ja 2025-05-17 04:00:59 +08:00
Alter-xyz
a364a62381 feat: deprecation zh 2025-05-17 03:58:38 +08:00
Alter-xyz
8089ce8119 feat: deprecation en 2025-05-17 03:50:54 +08:00
Alter-xyz
59a1ddb854 chore: updates 2025-05-16 23:51:43 +08:00
Alter-xyz
5cebbd9fc3 feat: remove backup
git has backup already
2025-05-16 22:42:56 +08:00
Alter-xyz
f4c2de2706 feat: tools merge 2025-05-16 22:30:57 +08:00
Alter-xyz
5c76f7e5a3 chore: Contributing Section 2025-05-16 21:50:45 +08:00
Alter-xyz
ccec883584 chore: update tools 2025-05-16 21:41:57 +08:00
Alter-xyz
34c89359db chore: contributing in page 2025-05-12 02:41:59 +08:00
Alter-xyz
cb1908e0ae feat!: edit and feedback button(card) 2025-05-04 02:50:25 +08:00
Alter-xyz
62db5380f8 feat: plugin dev 2025-05-04 01:17:47 +08:00
AllenWriter
762650be49 Feat: update cn docs urls 2025-03-27 19:45:09 +08:00
AllenWriter
afa89fb857 Docs: update docs image link 2025-03-26 00:42:17 +08:00