{"id":25305455,"url":"https://github.com/tonguyenducmanh/translate-json","last_synced_at":"2025-08-13T01:49:55.012Z","repository":{"id":209061833,"uuid":"723126884","full_name":"tonguyenducmanh/translate-json","owner":"tonguyenducmanh","description":"Tool dịch tự động toàn bộ value có trong 1 file js export default object sang ngôn ngữ khác bằng chatGPT, tối ưu số lần call dịch và tránh dịch các ký tự không mong muốn","archived":false,"fork":false,"pushed_at":"2023-12-08T00:45:13.000Z","size":1768,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-01T14:06:40.352Z","etag":null,"topics":["ai","chatgpt","js","tool"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonguyenducmanh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-24T18:56:45.000Z","updated_at":"2024-03-23T02:18:38.000Z","dependencies_parsed_at":"2025-02-13T09:46:20.082Z","dependency_job_id":null,"html_url":"https://github.com/tonguyenducmanh/translate-json","commit_stats":null,"previous_names":["tonguyenducmanh/tool-translate-from-open-api","tonguyenducmanh/tool-translate-jsfile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tonguyenducmanh/translate-json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonguyenducmanh%2Ftranslate-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonguyenducmanh%2Ftranslate-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonguyenducmanh%2Ftranslate-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonguyenducmanh%2Ftranslate-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonguyenducmanh","download_url":"https://codeload.github.com/tonguyenducmanh/translate-json/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonguyenducmanh%2Ftranslate-json/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270166014,"owners_count":24538440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","chatgpt","js","tool"],"created_at":"2025-02-13T09:35:22.537Z","updated_at":"2025-08-13T01:49:54.919Z","avatar_url":"https://github.com/tonguyenducmanh.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Tool giúp dịch value của object trong javascript sang ngôn ngữ đích bằng openAI\n\n### Mục lục\n\n[1. Yêu cầu](#requirement)\\\n[2. Hướng dẫn](#tutorial)\\\n[3. Tra log](#log)\\\n[4. Xóa ký tự đặc biệt trong value JSON](#remove-special)\\\n[5. Object nhiều level thành 1 object 1 level](#simplified-object)\\\n[6. Rút gọn key của object](#short-link)\\\n[7. Sửa lỗi và merge lại file](#merge-file)\\\n[8. Kiểm tra xem đã dịch được hết object chưa](#double-check)\n\n### \u003ca name=\"requirement\"\u003e\u003c/a\u003e 1. Yêu cầu\n\u003e online\n\u003e \n\u003e Sử dụng github Codespaces để chạy project này\n\u003e\n\u003e offline\n\u003e \n\u003e Máy tính có 2 tài khoản openai, lưu lại secretkey, cho vào config.js\n\u003e\n\u003e Cài đặt nodejs \u003e= 16.0.0\n\u003e\n\u003e Cài đặt vscode để chạy nodejs\n\u003e\n\u003e Đọc kỹ file config.js để hiểu các cấu hình tùy chỉnh\n\n### \u003ca name=\"tutorial\"\u003e\u003c/a\u003e 2. Hướng dẫn\n\n```\nTool sử dụng cơ chế chia file dịch\nthành nhiều queue nhỏ dựa vào config limitLine trong config.js,1 dòng nhiều chữ\nthì để limitLine nhỏ, 1 dòng ít chữ thì để limitLine lớn, 2 tài khoản mỗi khi chạy\nxong số dòng ứng với limitLine sẽ switch cho nhau tránh ratelimit của openai\n```\n\n![Ảnh config](images/read-config.png)\n\n```\nThực hiện cài nodeJS sau đó chạy bằng terminal lệnh\n# npm install\n```\n\n```\nĐể chạy demo việc dịch file js object nhiều level,\nđọc từ file: test.js, chạy termial bằng lệnh\n# npm run test\n```\n\n```\nCopy text muốn dịch vào trong file: originalLangObject.js\nchạy terminal lệnh dưới và đợi kết quả ở file: result.js\n# npm run serve\n```\n\n```\nNếu muốn thực hiện merge từ file kết quả result.txt (không gọi lại chatgpt)\n# npm run merge\n```\n\n### \u003ca name=\"log\"\u003e\u003c/a\u003e 3. Tra log\n\nTrường hợp chạy có thể văng exception, tra log tại file resultLog.txt\n![log file](images/log-file.png)\nFile này sẽ chứa cả thông tin % file js được dịch\n![loading success](images/log-success-percent-file.png)\n\n### \u003ca name=\"remove-special\"\u003e\u003c/a\u003e 4. Xóa ký tự đặc biệt trong value JSON\n\nMục đích tránh những lỗi không mong muốn khi json parse, json stringify.\nNhững ký tự đặc biệt được cấu hình trong config.js tại Key \"specialKeyNeedReplace\" sẽ được loại bỏ trước khi dịch, những ký tự này sẽ được chuyển đổi thành UUID, sau khi dịch sẽ rollback từ UUID về ký tự đặc biệt\n![rexgex](images/regex.png)\nví dụ, bạn muốn loại bỏ những ký tự đặc biệt giữa 2 dấu \"\" thì dùng regex\n\n```\n /\\\"(.*?)\\\"/gi\n```\n\n### \u003ca name=\"simplified-object\"\u003e\u003c/a\u003e 5. Object nhiều level thành 1 object 1 level\n\nMục đích trải phẳng object thành 1 cấp.\nHình dưới là object khi chưa dịch value, đây là 1 object có nhiều cấp\n![Ảnh file đầu vào](images/input-test.png)\nHình dưới là object khi dùng tool sẽ được trải phẳng từ nhiều cấp về 1 cấp.\nSau này người dùng có thể xác định được cấp nào với cấp nào, tránh nhầm key các object con.\n![Ảnh object được trải phẳng về 1 cấp](\u003cimages/multiple-level-object to single-level-object.png\u003e)\nHình dưới là object khi đã dịch value, object ở dạng trải phẳng\n![Ảnh file đầu ra dạng thô](images/translated-one-level-object.png)\nHình dưới là kết quả final khi object đã được trả về hình dạng nhiều cấp ban đầu và dịch thành công\n![Ảnh file đầu ra dạng hoàn thiện](images/one-level-to-multiple-level-object.png)\n\n### \u003ca name=\"short-link\"\u003e\u003c/a\u003e 6. Rút gọn key của object\n\nMục đích để số ký tự gửi đi được giảm thiểu.\nHình dưới là json đã được làm đơn giản hóa key\n![Ảnh key được rút gọn](images/simplified-key-before-translate.png)\nHình dưới là store lưu những key được làm đơn giản hóa\n![Ảnh key được lưu trữ trong object khác](images/simplified-key-store.png)\nHình dưới là sau khi json đã được khôi phục key ban đầu\n![Ảnh key đã được khôi phục](images/simplified-key-translated-restored.png)\n\n### \u003ca name=\"merge-file\"\u003e\u003c/a\u003e 7. Sửa lỗi và merge lại file\n\nMục đích tận dụng số file đã dịch và group lại.\nSẽ có những lúc chat GPT trả lời ra những câu thừa, thừa các ký tự đặc biệt\nnên khi cố gắng parse từ text object 1 level về file javascript object nhiều level bị lỗi.\nCách xử lý:\n\n- Copy toàn bộ nội dung trong file result.txt vào 1 file javascript trống\n- Thêm export default ở đầu file javascript\n- Kiểm tra những chỗ báo đỏ trong file javascript và sửa lại cho hết lỗi\n- Copy toàn bộ nội dung vừa sửa vào lại file result.txt (trừ từ \"export default\")\n- Thực hiện chạy lệnh \"npm run merge\" để build lại thành file js hoàn chỉnh\n\nTra log trong resultLog.txt:\n\n- Trường hợp là lỗi ký tự đặc biệt không json parse được thì thêm ký tự đặc biệt đó vào config phần \"specialKeyNeedReplace\" để bỏ qua không dịch.\n- Trường hợp object trả về trong result.txt không hoàn chỉnh, dịch sót thì vào lại config.js cấu hình lại limitLine giảm xuống (để dịch ít dòng hơn nhưng đủ ký tự hơn).\n\n### \u003ca name=\"double-check\"\u003e\u003c/a\u003e 8. Kiểm tra xem đã dịch được hết object chưa\n\nĐừng quá tin tưởng vào chatGPT, có thể nó dịch bị double key hoặc bị miss key.\nSử dụng tool ở link bên dưới để double check lại xem đã dịch được bao nhiêu key của file rồi, key mà dịch xong vẫn có value giống key gốc cũng sẽ hiển thị. Sau khi đã chạy và xuất ra được object các key chưa dịch thì cho lại vào tool dịch này trong file originalLangObject.js và chạy \"npm run serve\" để dịch tiếp; rồi lại cho vào phần addmore của tool dưới ....\n\n\u003e https://github.com/tonguyenducmanh/mapping-json\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonguyenducmanh%2Ftranslate-json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonguyenducmanh%2Ftranslate-json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonguyenducmanh%2Ftranslate-json/lists"}