# generaltranslation: General Translation Core SDK: uploadSourceFiles
URL: https://generaltranslation.com/ja/docs/core/class/methods/translation/upload-source-files.mdx
---
title: uploadSourceFiles
description: 翻訳用のソースファイルをアップロードする `uploadSourceFiles` メソッドの API リファレンス
---
## 概要
`uploadSourceFiles` メソッドは、翻訳処理のためにソースファイルを General Translation プラットフォームにアップロードします。
通常、これはプロジェクトの設定や翻訳ジョブのキュー追加を行う前に実施する、翻訳ワークフローの最初のステップです。
```typescript
const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' });
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en'
});
```
## リファレンス
### パラメータ
| 名前 | 型 | 説明 |
| --------- | -------------------------- | ------------------- |
| `files` | `{ source: FileUpload }[]` | アップロード対象のソースファイルの配列 |
| `options` | `UploadFilesOptions` | アップロードの設定オプション |
#### FileUpload の構造
| 名前 | 型 | 説明 |
| ------------- | ------------ | ---------------------------------- |
| `content` | `string` | ファイルの生の内容を表す文字列 |
| `fileName` | `string` | 一意のファイル識別子 (通常はファイルパス + 名前) |
| `fileFormat` | `FileFormat` | ファイル形式 (JSON、MDX、MD、XML など) |
| `dataFormat?` | `DataFormat` | ファイル内データの形式 (省略可。ICU、I18NEXT、JSX) |
| `locale` | `string` | ソースファイル内容のロケール |
| `versionId?` | `string` | 高度な用途向けの省略可能なバージョン ID |
| `fileId?` | `string` | 高度な用途向けの省略可能なファイル ID |
#### UploadFilesOptions
| 名前 | 型 | 説明 |
| ---------------- | -------- | --------------------------- |
| `sourceLocale` | `string` | アップロードするすべてのファイルのソースロケール |
| `branchId?` | `string` | アップロード先として指定する任意の branch ID |
| `modelProvider?` | `string` | 優先する AI モデルプロバイダ (任意) |
| `timeout?` | `number` | リクエストのタイムアウト (ミリ秒) |
### 戻り値
`Promise` - アップロード結果とファイル参照情報が含まれます。
```typescript
type UploadFilesResponse = {
uploadedFiles: FileReference[];
count: number;
message: string;
}
```
| Property | Type | 説明 |
| --------------- | ----------------- | --------------------------- |
| `uploadedFiles` | `FileReference[]` | 後続の操作で使用するアップロード済みファイル参照の配列 |
| `count` | `number` | 正常にアップロードされたファイルの数 |
| `message` | `string` | API からのステータスメッセージ |
#### FileReference の構造
```typescript
type FileReference = {
fileId: string;
versionId: string;
branchId: string;
fileName: string;
fileFormat: FileFormat;
dataFormat?: DataFormat;
locale?: string;
}
```
***
## 使用例
### 基本的な使い方
JSON翻訳ファイルをアップロードします:
```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: {
content: fs.readFileSync('./locales/en/common.json', 'utf8'),
fileName: 'common.json',
fileFormat: 'JSON' as const,
locale: 'en'
}
},
{
source: {
content: fs.readFileSync('./locales/en/navigation.json', 'utf8'),
fileName: 'navigation.json',
fileFormat: 'JSON' as const,
locale: 'en'
}
}
];
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en'
});
console.log(`Uploaded ${result.count} files`);
result.uploadedFiles.forEach(file => {
console.log(` ${file.fileName}: ${file.fileId} (branch: ${file.branchId})`);
});
```
### データ形式を指定する場合
データ形式を明示的に指定してファイルをアップロードします:
```typescript copy
const files = [
{
source: {
content: '{"welcome": "Welcome, {name}!"}',
fileName: 'messages.json',
fileFormat: 'JSON' as const,
dataFormat: 'ICU' as const, // ICU メッセージ形式
locale: 'en'
}
},
{
source: {
content: '{"greeting": "Hello {{name}}"}',
fileName: 'i18next.json',
fileFormat: 'JSON' as const,
dataFormat: 'I18NEXT' as const,
locale: 'en'
}
}
];
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
modelProvider: 'gpt-4',
timeout: 30000
});
```
### エラーハンドリング付きの一括アップロード
包括的なエラーハンドリングを行いながら、複数のファイルをアップロードします:
```typescript copy
import { glob } from 'glob';
import path from 'path';
async function uploadAllJsonFiles() {
try {
// すべてのJSONファイルを検索
const jsonPaths = await glob('./locales/en/**/*.json');
const files = jsonPaths.map(filePath => ({
source: {
content: fs.readFileSync(filePath, 'utf8'),
fileName: path.relative('./locales/en', filePath),
fileFormat: 'JSON' as const,
locale: 'en'
}
}));
console.log(`${files.length} 件のファイルをアップロード中...`);
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
timeout: 60000 // 大容量アップロード用の60秒タイムアウト
});
if (result.count !== files.length) {
console.warn(`${files.length} 件のファイルを期待しましたが、${result.count} 件のみアップロードされました`);
}
return result.uploadedFiles;
} catch (error) {
console.error('アップロードに失敗しました:', error);
throw error;
}
}
const uploadedFiles = await uploadAllJsonFiles();
```
***
## 注記
* ファイル内容は、安全に送信できるよう自動的に Base64 エンコードされます
* ファイル名は一意の識別子にする必要があり、通常はファイルパスを含めます
* 各ファイルの `locale` フィールドは、`sourceLocale` オプションと一致している必要があります
* ファイルが大きい場合やファイル数が多い場合は、タイムアウト値を増やす必要があることがあります
* このメソッドから返されるファイル参照は、後続の操作で必要になります
* ファイル参照には、ブランチ対応の適切なバージョン管理のために `branchId` が含まれます
* サポートされるファイル形式には JSON、MD、MDX、XML などがあり、完全な一覧は `FileFormat` 型を参照してください
## 次のステップ
* アップロード済みファイルを翻訳用に準備するには、[`setupProject`](/docs/core/class/methods/translation/setup-project)を参照してください
* 翻訳ジョブを開始するには、[`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files)を参照してください
* 既存の翻訳をアップロードするには、[`uploadTranslations`](/docs/core/class/methods/translation/upload-translations)を参照してください
* ファイル構造の詳細については、`FileUpload`を参照してください