Skip to main content
Glama
localization.ts1.94 kB
import * as fs from "fs/promises"; import * as path from "path"; export async function translateProject( projectPath: string, targetLanguage: string, apiKey?: string ): Promise<{ success: boolean; translated?: number; error?: string }> { const key = apiKey || process.env.GEMINI_API_KEY; if (!key) return { success: false, error: "API key missing" }; // Extract all text from data files const texts = await extractAllText(projectPath); let translated = 0; // Translate each text for (const text of texts) { const prompt = `Translate this RPG game text to ${targetLanguage}: "${text.content}"`; try { const response = await fetch( `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=${key}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ contents: [{ parts: [{ text: prompt }] }] }) } ); const data = await response.json(); const translatedText = data.candidates?.[0]?.content?.parts?.[0]?.text; // Save translation if (translatedText) { text.content = translatedText; translated++; } } catch { continue; } } // Write back translated texts await saveTranslatedTexts(projectPath, texts, targetLanguage); return { success: true, translated }; } async function extractAllText(projectPath: string): Promise<Array<{ file: string; path: string; content: string }>> { const texts: Array<{ file: string; path: string; content: string }> = []; // Extract from data files, maps, events, etc. return texts; } async function saveTranslatedTexts(projectPath: string, texts: any[], language: string): Promise<void> { const langDir = path.join(projectPath, "data", "lang", language); await fs.mkdir(langDir, { recursive: true }); // Save translated texts }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShunsukeHayashi/rpgmaker-mz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server