mirror of
https://github.com/thedotmack/claude-mem
synced 2026-04-25 17:15:04 +02:00
- Created README.zh.md for Chinese localization of the project. - Developed a README translation script to support multiple languages using Claude Agent SDK. - Implemented CLI and programmatic usage for the translation tool. - Added examples for integrating the translation tool into build scripts and CI/CD pipelines. - Enhanced error handling and logging for translation processes. - Included support for various languages and output customization options.
148 lines
4.0 KiB
TypeScript
148 lines
4.0 KiB
TypeScript
/**
|
|
* Example: Using readme-translator in build scripts
|
|
*
|
|
* These examples show how to integrate the translator into your build pipeline.
|
|
*/
|
|
|
|
import { translateReadme, TranslationJobResult, SUPPORTED_LANGUAGES } from "./index.js";
|
|
|
|
// Example 1: Simple usage - translate to a few common languages
|
|
async function translateToCommonLanguages(): Promise<void> {
|
|
const result = await translateReadme({
|
|
source: "./README.md",
|
|
languages: ["es", "fr", "de", "ja", "zh"],
|
|
verbose: true,
|
|
});
|
|
|
|
console.log(`Translated to ${result.successful} languages`);
|
|
}
|
|
|
|
// Example 2: Full i18n setup with custom output directory
|
|
async function fullI18nSetup(): Promise<void> {
|
|
const result = await translateReadme({
|
|
source: "./README.md",
|
|
languages: ["es", "fr", "de", "it", "pt", "ja", "ko", "zh", "ru", "ar"],
|
|
outputDir: "./docs/i18n",
|
|
pattern: "README.{lang}.md",
|
|
preserveCode: true,
|
|
model: "sonnet",
|
|
maxBudgetUsd: 5.0, // Cap spending at $5
|
|
verbose: true,
|
|
});
|
|
|
|
// Handle results programmatically
|
|
for (const r of result.results) {
|
|
if (!r.success) {
|
|
console.error(`Failed to translate to ${r.language}: ${r.error}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Example 3: Build script integration with error handling
|
|
// Note: If Claude Code is authenticated, no API key needed locally.
|
|
// CI/CD environments will need ANTHROPIC_API_KEY set.
|
|
async function buildScriptIntegration(): Promise<number> {
|
|
try {
|
|
const result = await translateReadme({
|
|
source: process.env.README_PATH || "./README.md",
|
|
languages: (process.env.TRANSLATE_LANGS || "es,fr,de").split(","),
|
|
outputDir: process.env.I18N_OUTPUT || "./i18n",
|
|
verbose: process.env.CI !== "true", // Quiet in CI
|
|
});
|
|
|
|
// Return exit code for build scripts
|
|
return result.failed > 0 ? 1 : 0;
|
|
} catch (error) {
|
|
console.error("Translation failed:", error);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
// Example 4: Batch translation of multiple READMEs
|
|
async function batchTranslation(): Promise<void> {
|
|
const readmes = [
|
|
"./README.md",
|
|
"./packages/core/README.md",
|
|
"./packages/cli/README.md",
|
|
];
|
|
|
|
const languages = ["es", "fr", "de"];
|
|
|
|
for (const readme of readmes) {
|
|
console.log(`\nProcessing: ${readme}`);
|
|
await translateReadme({
|
|
source: readme,
|
|
languages,
|
|
verbose: true,
|
|
});
|
|
}
|
|
}
|
|
|
|
// Example 5: Custom output pattern for docs sites
|
|
async function docsiteSetup(): Promise<void> {
|
|
// For docusaurus/vitepress style: docs/README.es.md
|
|
await translateReadme({
|
|
source: "./README.md",
|
|
languages: ["es", "fr", "de", "ja", "zh"],
|
|
outputDir: "./docs",
|
|
pattern: "README.{lang}.md",
|
|
verbose: true,
|
|
});
|
|
}
|
|
|
|
// Example 6: Conditional translation in CI/CD
|
|
async function cicdTranslation(): Promise<void> {
|
|
// Only translate on main branch releases
|
|
const isRelease = process.env.GITHUB_REF === "refs/heads/main";
|
|
const isManualTrigger = process.env.GITHUB_EVENT_NAME === "workflow_dispatch";
|
|
|
|
if (!isRelease && !isManualTrigger) {
|
|
console.log("Skipping translation - not a release build");
|
|
return;
|
|
}
|
|
|
|
const result = await translateReadme({
|
|
source: "./README.md",
|
|
languages: ["es", "fr", "de", "ja", "ko", "zh", "pt-br"],
|
|
outputDir: "./dist/i18n",
|
|
maxBudgetUsd: 10.0,
|
|
verbose: true,
|
|
});
|
|
|
|
// Write summary for GitHub Actions
|
|
if (process.env.GITHUB_STEP_SUMMARY) {
|
|
const summary = `
|
|
## Translation Summary
|
|
- ✅ Successful: ${result.successful}
|
|
- ❌ Failed: ${result.failed}
|
|
- 💰 Cost: $${result.totalCostUsd.toFixed(4)}
|
|
`;
|
|
// In real usage, write to GITHUB_STEP_SUMMARY
|
|
console.log(summary);
|
|
}
|
|
}
|
|
|
|
// Run an example
|
|
const example = process.argv[2];
|
|
|
|
switch (example) {
|
|
case "simple":
|
|
translateToCommonLanguages();
|
|
break;
|
|
case "full":
|
|
fullI18nSetup();
|
|
break;
|
|
case "batch":
|
|
batchTranslation();
|
|
break;
|
|
case "docs":
|
|
docsiteSetup();
|
|
break;
|
|
case "ci":
|
|
cicdTranslation();
|
|
break;
|
|
default:
|
|
console.log("Available examples: simple, full, batch, docs, ci");
|
|
console.log("\nSupported languages:", SUPPORTED_LANGUAGES.join(", "));
|
|
}
|