uploadSourceFiles
Referencia de API del método uploadSourceFiles para subir files de origen para traducción
Descripción general
El método uploadSourceFiles sube files de origen a la plataforma de General Translation para su procesamiento de traducción.
Suele ser el primer paso en un flujo de trabajo de traducción antes de configurar proyectos o enviar trabajos de traducción a la cola.
const gt = new GT({ apiKey: 'tu-api-key', projectId: 'tu-project-id' });
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en'
});Referencias
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
files | FileUpload[] | Array de files de origen para cargar |
options | UploadFilesOptions | options de configuración para la carga |
Estructura de FileUpload
| Name | Type | Description |
|---|---|---|
content | string | Contenido sin procesar del archivo como cadena |
fileName | string | Identificador único del archivo (normalmente ruta del archivo + nombre) |
fileFormat | FileFormat | Formato del archivo (JSON, MDX, MD, XML, etc.) |
dataFormat? | DataFormat | Formato opcional de los datos dentro del archivo (ICU, i18next, JSX) |
locale | string | Locale del contenido del archivo de origen |
versionId? | string | versionId opcional para casos de uso avanzados |
fileId? | string | fileId opcional para casos de uso avanzados |
UploadFilesOptions
| Nombre | Tipo | Descripción |
|---|---|---|
sourceLocale | string | El locale de origen para todos los files subidos |
modelProvider? | string | Preferencia opcional del proveedor de modelos de IA |
timeout? | number | Tiempo de espera de la solicitud en milisegundos |
Devuelve
Promise<UploadFilesResponse> - Contiene los resultados de la subida y las referencias a los archivos.
type UploadFilesResponse = {
uploadedFiles: FileUploadRef[];
count: number;
message: string;
}| Propiedad | Tipo | Descripción |
|---|---|---|
uploadedFiles | FileUploadRef[] | Matriz de referencias de archivos cargados para operaciones posteriores |
count | number | Número de files cargados correctamente |
message | string | Mensaje de estado de la API |
Estructura de FileUploadRef
type FileUploadRef = {
fileId: string;
versionId: string;
fileName: string;
fileFormat: FileFormat;
dataFormat?: DataFormat;
locale?: string;
}Ejemplos
Uso básico
Sube archivos de traducción JSON:
import { GT } from 'generaltranslation';
import fs from 'fs';
const gt = new GT({
apiKey: 'your-api-key'
});
const files = [
{
content: fs.readFileSync('./locales/en/common.json', 'utf8'),
fileName: 'common.json',
fileFormat: 'JSON' as const,
locale: 'en'
},
{
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(`Se cargaron ${result.count} archivos`);
result.uploadedFiles.forEach(file => {
console.log(` ${file.fileName}: ${file.fileId}`);
});Con especificación del formato de datos
Sube files con una especificación explícita del formato de datos:
const files = [
{
content: '{"welcome": "¡Bienvenido, {name}!"}',
fileName: 'messages.json',
fileFormat: 'JSON' as const,
dataFormat: 'ICU' as const, // ICU message format
locale: 'en'
},
{
content: '{"greeting": "Hola, {{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
});Carga por lotes con manejo de errores
Carga múltiples files con manejo integral de errores:
import { glob } from 'glob';
import path from 'path';
async function uploadAllJsonFiles() {
try {
// Buscar todos los archivos JSON
const jsonPaths = await glob('./locales/en/**/*.json');
const files = jsonPaths.map(filePath => ({
content: fs.readFileSync(filePath, 'utf8'),
fileName: path.relative('./locales/en', filePath),
fileFormat: 'JSON' as const,
locale: 'en'
}));
console.log(`Subiendo ${files.length} archivos...`);
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
timeout: 60000 // tiempo de espera de 60 segundos para cargas grandes
});
if (result.count !== files.length) {
console.warn(`Se esperaban ${files.length} archivos, pero solo se cargaron ${result.count}`);
}
return result.uploadedFiles;
} catch (error) {
console.error('Error de carga:', error);
throw error;
}
}
const uploadedFiles = await uploadAllJsonFiles();Notas
- El contenido del archivo se codifica automáticamente en Base64 para una transmisión segura
- Los nombres de archivo deben ser identificadores únicos, normalmente incluyendo la ruta del archivo
- El campo
localede cada archivo debe coincidir con la opciónsourceLocale - Los archivos grandes o un gran número de archivos pueden requerir aumentar los valores de
timeout - Las referencias de archivos que devuelve este método son necesarias para operaciones posteriores
- Los formatos de archivo compatibles incluyen JSON, MD, MDX, XML y otros; consulta el tipo
FileFormatpara ver la lista completa
Próximos pasos
- Consulta
setupProjectpara preparar files cargados para la traducción - Consulta
enqueueFilespara iniciar trabajos de traducción - Consulta
uploadTranslationspara subir traducciones existentes - Consulta
FileUploadpara conocer la estructura detallada de files
¿Qué te parece esta guía?