快速入门
generaltranslation 库的快速入门指南
概览
本指南将带你快速上手使用 generaltranslation 库的基础功能。 我们将讲解字符串翻译和文件翻译。
翻译你的第一个字符串
1. 获取环境变量
首先创建 GT_PROJECT_ID 和 GT_API_KEY。
这完全免费,并可让你使用翻译服务。
前往 API Keys 页面,点击 Create API Key。
为你的 API key 设置一个名称,然后点击 Create。

General Translation 为个人项目、独立开发者和社区提供非常宽松的免费配额限制。
2. 初始化 GT class
初始化 GT class,并安全地传入你的 GT_PROJECT_ID 和 GT_API_KEY。
import { GT } from 'generaltranslation';
const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});3. 翻译你的第一个字符串
调用 translate 方法来翻译字符串。
传入要翻译的字符串和目标 locale。
const { translation } = await gt.translate('Hello, world!', 'es'); // Spanish
console.log(translation); // "¡Hola, mundo!"如果你想查找某个语言代码,请查看 supported locales 页面。
翻译您的第一个文件
本指南假设您已完成翻译您的第一个字符串指南的第 1 和第 2 步,
并已拥有 GT_PROJECT_ID、GT_API_KEY,以及一个 GT 类实例。
假设您想将名为 en.json 的文件翻译成西班牙语。
{
  "hello": "你好",
  "world": "世界"
}要翻译一个文件,请按照以下四个步骤进行:
- 上传文件
- 将文件加入翻译队列
- 查看文件状态(可选)
- 下载翻译后的文件。
为什么不只用一次调用?
通常,用户会希望一次性翻译多个文件。 将流程拆分为四个清晰的步骤,能为用户使用 API 的方式提供更大的灵活性。
1. 上传文件
通过 uploadSourceFiles 方法上传文件后会返回一个文件引用列表。
这样你就可以在稍后将文件加入翻译队列、检查文件状态,并下载已翻译的文件。
import fs from 'fs';
import path from 'path';
import { FileUpload } from 'generaltranslation';
// (i) 读取文件内容
const filePath = path.join(process.cwd(), 'en.json');
const fileContents = fs.readFileSync(filePath, 'utf8');
// (ii) 格式化文件内容
const fileUpload: FileUpload = {
  content: fileContents,
  fileName: filePath,
  fileFormat: 'JSON',
  locale: 'en',
};
const files = [ { source: fileUpload } ];
// (iii) 上传文件
const { uploadedFiles } = await gt.uploadSourceFiles(
  files,
  {
    sourceLocale: 'en'
  }
);这将返回一组文件引用:
[
  {
    fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
    versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
    fileName: '/Users/demo/en.json',
    fileFormat: 'JSON'
  }
]2. 将文件加入翻译队列
接下来使用 enqueueFiles 方法选择此次翻译的目标 locales。
在本例中,我们将翻译为西班牙语。
const fileUploadRef = {
  fileId: uploadedFiles[0].fileId,
  versionId: uploadedFiles[0].versionId,
  fileName: uploadedFiles[0].fileName,
  fileFormat: uploadedFiles[0].fileFormat,
};
const enqueueResult = await gt.enqueueFiles(
  [fileUploadRef],
  {
  sourceLocale: 'en',
  targetLocales: ['es'],
});这将返回文件引用的列表:
{
  translations: [],
  data: {
    '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e': {
      fileName: '/Users/demo/en.json',
      versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121'
    }
  },
  locales: [ 'es' ],
  message: '正在创建 1 个翻译。'
}3. 检查文件状态
好了,文件已经上传。我们何时知道它可以下载了?
我们可以使用 checkFileTranslations 方法来检查文件状态。
const status = await gt.checkFileTranslations([{
  versionId: uploadedFiles[0].versionId,
  fileName: uploadedFiles[0].fileName,
  locale: 'es'
}]);如果文件仍在翻译中,输出中将不会包含对应的译文。
{
  translations: [
    {
      locale: 'es',
      metadata: {},
      fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
      fileName: '/Users/demo/en.json',
      versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
      id: 'skl44z0ieuvdcomw38zb5chv',
      isReady: true,
      downloadUrl: '/v2/project/translations/files/skl44z0ieuvdcomw38zb5chv/download'
    }
  ]
}4. 下载译文文件
最后,我们可以使用 downloadTranslatedFile 方法下载译文文件。
const { translation } = await gt.downloadTranslatedFile({
  fileId: uploadedFiles[0].fileId,
  locale: 'es',
  versionId: uploadedFiles[0].versionId,
});这将返回翻译后的文件内容:
{
  "hello": "你好",
  "world": "世界"
}这份指南怎么样?

