# 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)を参照してください