GT ClassMethodsTranslation

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

NombreTipoDescripción
filesFileUpload[]Array de files de origen para cargar
optionsUploadFilesOptionsoptions de configuración para la carga

Estructura de FileUpload

NameTypeDescription
contentstringContenido sin procesar del archivo como cadena
fileNamestringIdentificador único del archivo (normalmente ruta del archivo + nombre)
fileFormatFileFormatFormato del archivo (JSON, MDX, MD, XML, etc.)
dataFormat?DataFormatFormato opcional de los datos dentro del archivo (ICU, i18next, JSX)
localestringLocale del contenido del archivo de origen
versionId?stringversionId opcional para casos de uso avanzados
fileId?stringfileId opcional para casos de uso avanzados

UploadFilesOptions

NombreTipoDescripción
sourceLocalestringEl locale de origen para todos los files subidos
modelProvider?stringPreferencia opcional del proveedor de modelos de IA
timeout?numberTiempo 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;
}
PropiedadTipoDescripción
uploadedFilesFileUploadRef[]Matriz de referencias de archivos cargados para operaciones posteriores
countnumberNúmero de files cargados correctamente
messagestringMensaje 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 locale de cada archivo debe coincidir con la opción sourceLocale
  • 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 FileFormat para ver la lista completa

Próximos pasos

  • Consulta setupProject para preparar files cargados para la traducción
  • Consulta enqueueFiles para iniciar trabajos de traducción
  • Consulta uploadTranslations para subir traducciones existentes
  • Consulta FileUpload para conocer la estructura detallada de files

¿Qué te parece esta guía?