uni-app 实现指定locale下已写好的语言json文件,一键翻译成其他语言,并生成对应文件

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 实现指定locale下已写好的语言json文件,一键翻译成其他语言,并生成对应文件

1 回复

实现 uni-app 中指定 locale 下已写好的语言 JSON 文件一键翻译成其他语言并生成对应文件的功能,通常需要借助第三方翻译 API(如 Google Translate API 或 阿里云翻译 API)。以下是一个使用 Google Translate API 的示例代码,该代码会读取已有的 JSON 文件,将其翻译成目标语言,并生成新的 JSON 文件。

前提条件

  1. 确保你已经安装了 axios@google-cloud/translate 这两个 npm 包。
  2. 获取 Google Cloud Translate API 的密钥。

示例代码

  1. 安装依赖
npm install axios @google-cloud/translate
  1. 读取 JSON 文件、翻译并生成新文件
const fs = require('fs');
const axios = require('axios');
const { Translate } = require('@google-cloud/translate').v2;

// 配置 Google Translate API
const projectId = 'your-google-cloud-project-id';
const keyFilename = 'path/to/your/service-account-file.json';
const translate = new Translate({ projectId, keyFilename });

// 读取 JSON 文件
const readFile = (filePath) => {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, 'utf8', (err, data) => {
      if (err) reject(err);
      resolve(JSON.parse(data));
    });
  });
};

// 写入 JSON 文件
const writeFile = (filePath, data) => {
  return new Promise((resolve, reject) => {
    fs.writeFile(filePath, JSON.stringify(data, null, 2), 'utf8', (err) => {
      if (err) reject(err);
      resolve();
    });
  });
};

// 翻译文本
const translateText = async (text, targetLang) => {
  const [translations] = await translate.translate(text, targetLang);
  return translations;
};

// 主函数
const main = async () => {
  const sourceLang = 'en'; // 源语言
  const targetLang = 'zh'; // 目标语言
  const sourceFilePath = 'path/to/your/source-lang.json';
  const targetFilePath = `path/to/your/${targetLang}-lang.json`;

  try {
    const sourceData = await readFile(sourceFilePath);
    const translatedData = {};

    for (const key in sourceData) {
      translatedData[key] = await translateText(sourceData[key], targetLang);
    }

    await writeFile(targetFilePath, translatedData);
    console.log('Translation completed and file written successfully.');
  } catch (error) {
    console.error('Error:', error);
  }
};

main();

注意事项

  • 你需要替换 your-google-cloud-project-idpath/to/your/service-account-file.json 为你的 Google Cloud 项目 ID 和服务账号文件路径。
  • 上述代码假设 JSON 文件是简单的键值对结构。如果 JSON 结构更复杂,你可能需要调整 translateText 函数的调用逻辑。
  • 使用第三方 API 时,请注意 API 调用限制和费用。

通过上述代码,你可以实现 uni-app 中语言 JSON 文件的一键翻译和生成。

回到顶部