# General Translation Platform: Перевод файлов URL: https://generaltranslation.com/ru/docs/platform/core/guides/translating-files.mdx --- title: Перевод файлов description: "Как переводить файлы с помощью библиотеки generaltranslation: в этом руководстве рассматриваются загрузка исходного файла, постановка перевода в очередь, проверка статуса и скачивание переведенного файла." related: links: - /docs/platform/core/guides/translating-strings - /docs/platform/core/guides/locale-codes --- Библиотека `generaltranslation` может переводить исходные файлы целиком. На этой странице описаны процессы загрузки файлов, постановки перевода в очередь, проверки статуса и скачивания результата. ## Перед началом [#before-start] Убедитесь, что вы прошли [Quickstart](/docs/platform/core/quickstart): установили `generaltranslation` и инициализировали класс [GT](/docs/platform/core/reference/gt-class/constructor). ## Как работает перевод файлов [#file-translation-works] Перевод файлов выполняется в виде задач: 1. Загрузите исходный файл. 2. Поставьте файл в очередь на перевод. 3. Проверьте статус перевода. 4. Скачайте переведённый файл. Для перевода файлов требуется несколько вызовов API, поскольку в проектах часто переводят много файлов. Разделение на отдельные шаги даёт больше гибкости при работе с API: так проще обрабатывать файлы пакетно, повторять неудачные операции, опрашивать задачи и скачивать результат, когда он будет готов. Запустите задачу, загрузив файл; если загрузить несколько файлов, будет запущено несколько задач. Подробнее см. методы [uploadSourceFiles](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files) и [queryFileData](/docs/platform/core/reference/gt-class-methods/translation/query-file-data). ## 1. Загрузите исходный файл [#upload] Для примера в этом руководстве мы переведём этот JSON-файл на английском языке: ```json { "hello": "Hello", "world": "World" } ``` Прочитайте файл, отформатируйте его содержимое, затем вызовите [uploadSourceFiles](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files), чтобы загрузить файлы. ```typescript title="src/index.ts" import fs from 'fs'; import path from 'path'; import { FileUpload } from 'generaltranslation/types'; // (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' } ); ``` В ответе возвращается список ссылок на файлы. Это позволяет позже поставить файл в очередь на перевод, проверить статус файла и скачать переведённый файл. ```ts title="Output" [ { fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e', versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121', branchId: '123456789', fileName: '/Users/demo/en.json', fileFormat: 'JSON' } ] ``` ## 2. Поставьте файл в очередь на перевод [#enqueue] Используйте [enqueueFiles](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files), указав ссылку на загруженный файл и целевые локали. В этом примере мы переведём файл на испанский (`es`). ```typescript title="src/index.ts" const fileUploadRef = { fileId: uploadedFiles[0].fileId, versionId: uploadedFiles[0].versionId, branchId: uploadedFiles[0].branchId, fileName: uploadedFiles[0].fileName, fileFormat: uploadedFiles[0].fileFormat, }; const enqueueResult = await gt.enqueueFiles( [fileUploadRef], { sourceLocale: 'en', targetLocales: ['es'], } ); ``` В ответе возвращается результат с данными о задаче. ```ts title="Output" { jobData: { 'job-123456': { sourceFileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e', fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e', versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121', branchId: '123456789', targetLocale: 'es', projectId: 'your-project-id', force: false } }, locales: ['es'], message: 'Successfully enqueued 1 file translation jobs in 1 batch(es)' } ``` ## 3. Проверьте статус файла [#status] Используйте [queryFileData](/docs/platform/core/reference/gt-class-methods/translation/query-file-data), чтобы проверить, завершён ли перевод файла и готов ли файл к скачиванию. ```typescript title="src/index.ts" const { fileId, versionId, branchId } = uploadedFiles[0]; const status = await gt.queryFileData({ translatedFiles: [ { fileId, versionId, branchId, locale: 'es', }, ], }); ``` Если файл всё ещё переводится, `completedAt` равно `null`. После завершения в нём будет временная метка: ```ts title="Output" { translatedFiles: [ { fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e', versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121', branchId: '123456789', locale: 'es', completedAt: '2024-01-15T12:00:00Z' } ] } ``` ## 4. Скачайте переведённый файл [#download] Наконец, скачайте переведённый файл с помощью метода [downloadFile](/docs/platform/core/reference/gt-class-methods/translation/download-file). ```typescript title="src/index.ts" const { fileId, branchId } = uploadedFiles[0]; const content = await gt.downloadFile({ fileId, branchId, locale: 'es', }); ``` В ответе возвращается содержимое переведённого файла. В этом примере возвращается: ```json title="Output" { "hello": "Hola", "world": "Mundo" } ``` ## Next steps - /docs/platform/core/guides/translating-strings - /docs/platform/core/guides/locale-codes