Быстрый старт

Краткое руководство по библиотеке General Translation

Обзор

В этом руководстве вы узнаете основы работы с библиотекой generaltranslation. Мы рассмотрим перевод строк и файлов.


Переведите свою первую строку

1. Получите переменные окружения

Первый шаг — создать GT_PROJECT_ID и GT_API_KEY. Это полностью бесплатно и даст вам доступ к сервисам перевода.

Перейдите на страницу API Keys и нажмите Create API Key. Укажите имя для своего API‑ключа и нажмите Create.

API key page

General Translation предлагает очень щедрые бесплатные лимиты, чтобы поддержать персональные проекты, независимых разработчиков и сообщество.

2. Инициализируйте класс GT

Инициализируйте класс GT и безопасно передайте свои GT_PROJECT_ID и GT_API_KEY.

src/index.ts
import { GT } from 'generaltranslation';

const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

3. Переведите свою первую строку

Вызовите метод translate, чтобы перевести строку. Передайте строку, которую нужно перевести, и целевую локаль.

src/index.ts
const { translation } = await gt.translate('Hello, world!', 'es'); // испанский

console.log(translation); // "¡Hola, mundo!"

Если нужно узнать код локали, откройте страницу поддерживаемых локалей.


Переведите свой первый файл

В этом руководстве предполагается, что вы уже выполнили шаги 1 и 2 из раздела Translate your first string и у вас есть GT_PROJECT_ID, GT_API_KEY и экземпляр класса GT.

Предположим, вы хотите перевести файл en.json на испанский.

en.json
{
  "hello": "Привет",
  "world": "Мир"
}

Чтобы перевести файл, выполните эти четыре шага:

  1. Загрузите файл
  2. Поставьте файл в очередь на перевод
  3. Проверьте статус файла (необязательно)
  4. Скачайте переведённый файл.

Почему не одним запросом?

Обычно нужно переводить сразу много файлов. Разделение на четыре понятных шага даёт пользователям гораздо больше гибкости в использовании API.

1. Загрузите файл

Метод uploadSourceFiles при загрузке возвращает список ссылок на файлы. Это позволяет позже поставить файл в очередь на перевод, проверить его статус и скачать переведённый файл.

src/index.ts
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'
  }
);

Это вернет список ссылок на файлы:

Output
[
  {
    fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
    versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
    fileName: '/Users/demo/en.json',
    fileFormat: 'JSON'
  }
]

2. Добавьте файл в очередь на перевод

Далее выберите целевые локали для перевода с помощью метода enqueueFiles. В этом примере мы переведём на испанский.

src/index.ts
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'],
});

Это вернёт список ссылок на файлы:

Output
{
  translations: [],
  data: {
    '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e': {
      fileName: '/Users/demo/en.json',
      versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121'
    }
  },
  locales: [ 'es' ],
  message: 'Создание 1 перевода.'
}

3. Проверьте статус файла

Итак, файл загружен. Когда мы узнаем, что он готов к загрузке? Мы можем использовать метод checkFileTranslations, чтобы проверить статус файла.

src/index.ts
const status = await gt.checkFileTranslations([{
  versionId: uploadedFiles[0].versionId,
  fileName: uploadedFiles[0].fileName,
  locale: 'es'
}]);

Если файл всё ещё находится в процессе перевода, соответствующих результатов в выводе не будет.

Output
{
  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.

src/index.ts
const { translation } = await gt.downloadTranslatedFile({
  fileId: uploadedFiles[0].fileId,
  locale: 'es',
  versionId: uploadedFiles[0].versionId,
});

Будет возвращено переведённое содержимое файла:

Output
{
  "hello": "Привет",
  "world": "Мир"
}

Насколько полезно это руководство?

Быстрый старт