# generaltranslation: General Translation Core SDK: uploadTranslations URL: https://generaltranslation.com/ja/docs/core/class/methods/translation/upload-translations.mdx --- title: uploadTranslations description: 既存の翻訳ファイルをアップロードする uploadTranslations メソッドの API リファレンス --- ## 概要 `uploadTranslations` メソッドは、事前にアップロード済みのソースファイルに対応する翻訳ファイルをアップロードします。 翻訳サービスで生成する代わりに、既存の翻訳を直接アップロードしたい場合に便利です。 ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.uploadTranslations(files, { sourceLocale: 'en' }); ``` 翻訳をアップロードする前に、事前に [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) を使ってソースファイルをアップロードしておく必要があります。 ## リファレンス ### パラメーター | 名前 | 型 | 説明 | | --------- | --------------------- | ----------------- | | `files` | `TranslationUpload[]` | 翻訳を含むソースファイル参照の配列 | | `options` | `UploadFilesOptions` | アップロードの設定オプション | #### TranslationUpload の構造 ```typescript type TranslationUpload = { source: FileUpload; // 既存のソースファイルへの参照(コンテンツ不要) translations: FileUpload[]; // コンテンツを含む翻訳済みファイルの配列 } ``` #### FileUpload 構造 (原文参照用) | 名前 | 型 | 説明 | | ------------ | ------------ | ---------------------------- | | `fileName` | `string` | 以前にアップロードされたソースファイルと同じファイル名 | | `fileFormat` | `FileFormat` | ファイル形式 (JSON、MDX、MD、XML など) | | `fileId?` | `string` | ソースファイルのファイル ID (省略可) | | `versionId?` | `string` | ソースファイルのバージョン ID (省略可) | #### FileUpload の構造 (翻訳用) | 名前 | 型 | 説明 | | ------------ | ------------ | ---------------------------- | | `content` | `string` | 翻訳済みファイルの生の内容 (文字列) | | `fileName` | `string` | 翻訳ファイルの名前 | | `fileFormat` | `FileFormat` | ファイル形式 (JSON、MDX、MD、XML など) | | `locale` | `string` | 対象ロケール | | `fileId?` | `string` | オプションのファイル ID | | `versionId?` | `string` | オプションのバージョン ID | #### UploadFilesOptions | 名前 | 型 | 説明 | | -------------- | -------- | ------------------- | | `sourceLocale` | `string` | ファイルのソースロケール | | `branchId?` | `string` | アップロード先の任意のブランチ ID | | `timeout?` | `number` | リクエストのタイムアウト (ミリ秒) | ### 戻り値 `Promise` - アップロード結果とファイルへの参照が含まれます。 ```typescript type UploadFilesResponse = { uploadedFiles: FileReference[]; count: number; message: string; } ``` | プロパティ | 型 | 説明 | | --------------- | ----------------- | ----------------- | | `uploadedFiles` | `FileReference[]` | アップロード済みファイル参照の配列 | | `count` | `number` | 正常にアップロードされたファイル数 | | `message` | `string` | API からのステータスメッセージ | *** ## 例 ### 基本的な使い方 すでにアップロード済みのソースファイルの翻訳をアップロードします: ```typescript copy import { GT } from 'generaltranslation'; import fs from 'fs'; const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); // ソースファイルは事前にアップロード済みと仮定 const files = [ { source: { fileName: 'common.json', fileFormat: 'JSON' as const, fileId: 'source-file-id', versionId: 'source-version-id' }, translations: [ { content: fs.readFileSync('./locales/es/common.json', 'utf8'), fileName: 'common.json', fileFormat: 'JSON' as const, locale: 'es' }, { content: fs.readFileSync('./locales/fr/common.json', 'utf8'), fileName: 'common.json', fileFormat: 'JSON' as const, locale: 'fr' } ] } ]; const result = await gt.uploadTranslations(files, { sourceLocale: 'en' }); console.log(`Uploaded ${result.count} translation files`); ``` ### ソースのアップロード後に翻訳をアップロード ソースファイルをアップロードし、その後で翻訳をアップロードする一連のワークフロー: ```typescript copy import { GT } from 'generaltranslation'; import fs from 'fs'; const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); // ステップ1: ソースファイルをアップロード const sourceFiles = [ { source: { content: fs.readFileSync('./locales/en/messages.json', 'utf8'), fileName: 'messages.json', fileFormat: 'JSON' as const, locale: 'en' } } ]; const { uploadedFiles } = await gt.uploadSourceFiles(sourceFiles, { sourceLocale: 'en' }); // ステップ2: 既存の翻訳をアップロード const translationFiles = [ { source: { fileName: uploadedFiles[0].fileName, fileFormat: uploadedFiles[0].fileFormat, fileId: uploadedFiles[0].fileId, versionId: uploadedFiles[0].versionId }, translations: [ { content: fs.readFileSync('./locales/es/messages.json', 'utf8'), fileName: 'messages.json', fileFormat: 'JSON' as const, locale: 'es' }, { content: fs.readFileSync('./locales/de/messages.json', 'utf8'), fileName: 'messages.json', fileFormat: 'JSON' as const, locale: 'de' } ] } ]; const translationResult = await gt.uploadTranslations(translationFiles, { sourceLocale: 'en' }); console.log(`${translationResult.count} 件の翻訳をアップロードしました`); ``` ### 複数ファイルの一括アップロード 複数のソースファイルに対応する翻訳をアップロードします: ```typescript copy import { glob } from 'glob'; import path from 'path'; async function uploadAllTranslations( sourceRefs: FileReference[], targetLocales: string[] ) { const files = sourceRefs.map(sourceRef => ({ source: { fileName: sourceRef.fileName, fileFormat: sourceRef.fileFormat, fileId: sourceRef.fileId, versionId: sourceRef.versionId }, translations: targetLocales .map(locale => { const translationPath = `./locales/${locale}/${sourceRef.fileName}`; try { return { content: fs.readFileSync(translationPath, 'utf8'), fileName: sourceRef.fileName, fileFormat: sourceRef.fileFormat, locale }; } catch { // このロケールの翻訳ファイルが存在しません return null; } }) .filter(Boolean) })); const result = await gt.uploadTranslations(files, { sourceLocale: 'en', timeout: 60000 }); return result; } ``` *** ## 注意事項 * ソースファイルは、[`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) を使用して先にアップロードしておく必要があります * 各ファイルエントリの `source` オブジェクトは、既存のソースファイルへの参照です (コンテンツ自体は不要です) * `translations` 配列内の各翻訳には、コンテンツと対象ロケールを含める必要があります * このメソッドは、既存の翻訳を移行する場合や、人手でレビュー済みの翻訳をアップロードする場合に役立ちます * ファイル参照には、ブランチ対応で適切にバージョン管理できるよう `branchId` が含まれます ## 次のステップ * まずソースファイルをアップロードするには、[`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files)を参照してください * 翻訳を自動生成するには、[`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files)を参照してください * 翻訳をダウンロードするには、[`downloadFile`](/docs/core/class/methods/translation/download-file)を参照してください * 翻訳のステータスを確認するには、[`queryFileData`](/docs/core/class/methods/translation/query-file-data)を参照してください