Algunas traducciones de juegos

Shiraga escribió:Una pena lo del Fate Samurai Remnant, poco más que decir.


Imagen

Imagen

Imagen

Le sirve a alguno esto:
fate_translate.py

#!/usr/bin/env python3
"""
FATE/SAMURAI REMNANT - SISTEMA COMPLETO DE TRADUCCIÓN - Si usais esto, podeis acreditar el trabajo a la atención de: Misweb0hM0ren0s
Extrae, traduce y reimporta textos con soporte UTF-8 para español
No se debe exceder el tamaño del texto por linea. Romperia el offset, aquí se complica la cosa, habria que ver el espacio libre en el fichero, y con un debugger anotar direccion y luego parchear en hex..., un rollo.
Quedaria pendiente la fuente, para quien quiera abordar el proyecto. Tampoco se si hay más texto en otros archivos, no he buscado.
Uso:
- Pega el script en la carpeta del juego \ebc8c781\fate_translate.py
- Ejecuta: python fate_translate.py 170b1e1e.bin extract
- Se generaran los ficheros: 170b1e1e.translation.json - 170b1e1e.translation.csv - 170b1e1e.translation.txt - 170b1e1e.edit.json
- Abre 170b1e1e.translation.csv en LibreOffice
- Traduce la columna "Traducción"
- Guarda el fichero como traducciones.csv con codificación UTF-8
- Ejecuta: python fate_translate.py 170b1e1e.bin import traducciones.csv

- Para verificar longitudes:
    - python fate_translate.py 170b1e1e.bin verify
    - python fate_translate.py 170b1e1e.bin preview

- Reimportar texto traducido al fichero 170b1e1e.bin
    - python fate_translate.py 170b1e1e.bin reimport

"""

import os
import sys
import json
import csv
import shutil
from dataclasses import dataclass, asdict
from typing import List, Optional
from pathlib import Path

@dataclass
class TextEntry:
    """Representa un texto en el archivo"""
    offset: int
    original: str
    translated: str = ""
    length: int = 0
    is_ui: bool = False
   
    def get_bytes(self, use_translation=True):
        """Obtiene bytes del texto (original o traducido)"""
        text = self.translated if use_translation and self.translated else self.original
        # Siempre usar UTF-8 para soportar caracteres españoles
        return text.encode('utf-8') + b'\x00'
   
    @property
    def translated_bytes(self):
        """Bytes de la traducción"""
        if not self.translated:
            return None
        return self.translated.encode('utf-8') + b'\x00'

class FateTranslationSystem:
    """Sistema completo de gestión de traducciones"""
   
    def __init__(self, bin_file: str):
        self.bin_file = Path(bin_file)
        self.backup_file = self.bin_file.with_suffix('.bin.backup')
        self.project_file = self.bin_file.with_suffix('.translation.json')
        self.entries: List[TextEntry] = []
       
        if not self.bin_file.exists():
            raise FileNotFoundError(f"Archivo no encontrado: {self.bin_file}")
   
    # ==================== EXTRACCIÓN ====================
   
    def extract_texts(self, min_length=3, max_length=500):
        """Extrae todos los textos del archivo .bin"""
        print(f"🔍 Extrayendo textos de {self.bin_file.name}...")
       
        with open(self.bin_file, 'rb') as f:
            data = f.read()
       
        self.entries.clear()
        i = 0
        total_size = len(data)
       
        while i < total_size:
            # Buscar inicio de texto (ASCII imprimible)
            if 32 <= data[i] <= 126:
                start = i
                text_bytes = bytearray()
               
                # Leer hasta encontrar byte 00
                while i < total_size and data[i] != 0:
                    if 32 <= data[i] <= 126:
                        text_bytes.append(data[i])
                        i += 1
                    else:
                        # Carácter no-ASCII, terminar este texto
                        break
               
                # Procesar si es un texto válido
                if min_length <= len(text_bytes) <= max_length:
                    try:
                        # Intentar decodificar como UTF-8 (puede ser ASCII también)
                        text = text_bytes.decode('utf-8')
                       
                        # Filtrar textos válidos
                        if self._is_valid_game_text(text):
                            is_ui = self._is_ui_text(text)
                           
                            self.entries.append(TextEntry(
                                offset=start,
                                original=text,
                                length=len(text_bytes),
                                is_ui=is_ui
                            ))
                           
                    except UnicodeDecodeError:
                        # Si falla UTF-8, intentar ASCII
                        try:
                            text = text_bytes.decode('ascii')
                            if self._is_valid_game_text(text):
                                is_ui = self._is_ui_text(text)
                               
                                self.entries.append(TextEntry(
                                    offset=start,
                                    original=text,
                                    length=len(text_bytes),
                                    is_ui=is_ui
                                ))
                        except:
                            pass
               
                # Buscar próximo byte 00
                while i < total_size and data[i] != 0:
                    i += 1
            else:
                i += 1
       
        # Ordenar por offset
        self.entries.sort(key=lambda x: x.offset)
       
        print(f"✅ Extraídos {len(self.entries)} textos")
        print(f"📊 Estadísticas:")
        print(f"   - Textos de UI: {sum(1 for e in self.entries if e.is_ui)}")
        print(f"   - Diálogos: {sum(1 for e in self.entries if not e.is_ui)}")
       
        # Guardar proyecto
        self.save_project()
       
        # Crear archivos para traducción
        self.create_translation_files()
       
        return self.entries
   
    def _is_valid_game_text(self, text: str) -> bool:
        """Determina si el texto es válido para el juego"""
        if len(text) < 2:
            return False
       
        # Debe contener letras
        if not any(c.isalpha() for c in text):
            return False
       
        # Filtrar basura binaria común
        garbage_patterns = [
            r'^[A-Z]{4,}$',  # ARCH, ALGB, etc.
            r'^[a-z][A-Z].*[A-Z][a-z]',  # aBcD
            r'.*[0-9][A-Z][0-9][A-Z].*',  # 1A2B
            r'^[^aeiouAEIOU]{6,}$',  # Sin vocales
        ]
       
        import re
        for pattern in garbage_patterns:
            if re.match(pattern, text):
                return False
       
        # Demasiados símbolos raros
        allowed_symbols = set(' .,!?;\':\"-()[]¿¡')
        symbol_count = sum(1 for c in text if not c.isalnum() and c not in allowed_symbols)
       
        if symbol_count > len(text) * 0.3:  # Más del 30% símbolos raros
            return False
       
        return True
   
    def _is_ui_text(self, text: str) -> bool:
        """Determina si es texto de interfaz de usuario"""
        ui_keywords = [
            'Press', 'Button', 'Key', 'Start', 'Menu', 'Option',
            'Save', 'Load', 'Continue', 'Exit', 'Back', 'Yes', 'No',
            'OK', 'Cancel', 'HP', 'MP', 'EXP', 'Level', 'Attack',
            'Defense', 'Item', 'Skill', 'Map', 'Inventory'
        ]
       
        text_upper = text.upper()
        return any(keyword.upper() in text_upper for keyword in ui_keywords)
   
    # ==================== GESTIÓN DE PROYECTO ====================
   
    def save_project(self):
        """Guarda el proyecto de traducción en JSON"""
        project_data = {
            'source_file': str(self.bin_file),
            'total_texts': len(self.entries),
            'entries': [asdict(e) for e in self.entries]
        }
       
        with open(self.project_file, 'w', encoding='utf-8') as f:
            json.dump(project_data, f, ensure_ascii=False, indent=2)
       
        print(f"💾 Proyecto guardado: {self.project_file}")
   
    def load_project(self):
        """Carga el proyecto desde JSON"""
        if not self.project_file.exists():
            print(f"❌ Proyecto no encontrado: {self.project_file}")
            return False
       
        with open(self.project_file, 'r', encoding='utf-8') as f:
            project_data = json.load(f)
       
        self.entries = [TextEntry(**e) for e in project_data['entries']]
        print(f"✅ Proyecto cargado: {len(self.entries)} textos")
        return True
   
    # ==================== ARCHIVOS DE TRADUCCIÓN ====================
   
    def create_translation_files(self):
        """Crea archivos para facilitar la traducción"""
       
        # 1. Archivo CSV para Excel/Google Sheets
        csv_file = self.bin_file.with_suffix('.translation.csv')
        with open(csv_file, 'w', encoding='utf-8-sig', newline='') as f:
            writer = csv.writer(f)
            writer.writerow(['ID', 'Offset', 'Tipo', 'Original', 'Traducción', 'Notas', 'Longitud_Original'])
           
            for i, entry in enumerate(self.entries, 1):
                writer.writerow([
                    i,
                    f"0x{entry.offset:08X}",
                    'UI' if entry.is_ui else 'Dialogo',
                    entry.original,
                    entry.translated if entry.translated else '',
                    '',
                    entry.length
                ])
       
        print(f"📊 CSV creado: {csv_file}")
       
        # 2. Archivo TXT simple
        txt_file = self.bin_file.with_suffix('.translation.txt')
        with open(txt_file, 'w', encoding='utf-8') as f:
            f.write(f"TRADUCCIÓN - {self.bin_file.name}\n")
            f.write("=" * 80 + "\n\n")
           
            for i, entry in enumerate(self.entries, 1):
                f.write(f"[{i:04d}] {'[UI]' if entry.is_ui else '[DLG]'} ")
                f.write(f"(0x{entry.offset:08X}, {entry.length} chars)\n")
                f.write(f"ORIGINAL:  {entry.original}\n")
                f.write(f"TRADUCIR:  {entry.translated if entry.translated else ''}\n")
                f.write("-" * 60 + "\n\n")
       
        print(f"📝 TXT creado: {txt_file}")
       
        # 3. Archivo JSON para editores avanzados
        json_edit_file = self.bin_file.with_suffix('.edit.json')
        with open(json_edit_file, 'w', encoding='utf-8') as f:
            json.dump([{
                'id': i,
                'offset': f"0x{e.offset:08X}",
                'type': 'ui' if e.is_ui else 'dialogue',
                'original': e.original,
                'translation': e.translated,
                'max_length': e.length
            } for i, e in enumerate(self.entries, 1)], f, ensure_ascii=False, indent=2)
       
        print(f"⚙️  JSON editable: {json_edit_file}")
   
    def import_translation_csv(self, csv_file: str):
        """Importa traducciones desde un archivo CSV"""
        csv_path = Path(csv_file)
        if not csv_path.exists():
            print(f"❌ Archivo CSV no encontrado: {csv_file}")
            return False
       
        print(f"📥 Importando traducciones desde {csv_path.name}...")
       
        # Cargar proyecto si no está cargado
        if not self.entries:
            if not self.load_project():
                return False
       
        translations_imported = 0
       
        try:
            with open(csv_path, 'r', encoding='utf-8-sig') as f:
                reader = csv.DictReader(f)
               
                for row in reader:
                    try:
                        text_id = int(row['ID']) - 1  # Convertir a índice 0-based
                        if 0 <= text_id < len(self.entries):
                            translation = row['Traducción'].strip()
                            if translation:
                                self.entries[text_id].translated = translation
                                translations_imported += 1
                    except (ValueError, KeyError):
                        continue
           
            print(f"✅ Importadas {translations_imported} traducciones")
           
            # Guardar proyecto actualizado
            self.save_project()
           
            return True
           
        except Exception as e:
            print(f"❌ Error importando CSV: {e}")
            return False
   
    def import_translation_json(self, json_file: str):
        """Importa traducciones desde JSON editado"""
        json_path = Path(json_file)
        if not json_path.exists():
            print(f"❌ Archivo JSON no encontrado: {json_file}")
            return False
       
        print(f"📥 Importando desde JSON...")
       
        try:
            with open(json_path, 'r', encoding='utf-8') as f:
                imported_data = json.load(f)
           
            translations_imported = 0
           
            for item in imported_data:
                try:
                    text_id = item['id'] - 1  # Convertir a índice 0-based
                    if 0 <= text_id < len(self.entries):
                        translation = item.get('translation', '').strip()
                        if translation:
                            self.entries[text_id].translated = translation
                            translations_imported += 1
                except (KeyError, ValueError):
                    continue
           
            print(f"✅ Importadas {translations_imported} traducciones")
            self.save_project()
            return True
           
        except Exception as e:
            print(f"❌ Error importando JSON: {e}")
            return False
   
    # ==================== REIMPORTACIÓN ====================
   
    def create_backup(self):
        """Crea una copia de seguridad del archivo original"""
        if self.backup_file.exists():
            print(f"⚠️  Backup ya existe: {self.backup_file.name}")
            return True
       
        try:
            shutil.copy2(self.bin_file, self.backup_file)
            print(f"💾 Backup creado: {self.backup_file.name}")
            return True
        except Exception as e:
            print(f"❌ Error creando backup: {e}")
            return False
   
    def restore_backup(self):
        """Restaura desde la copia de seguridad"""
        if not self.backup_file.exists():
            print(f"❌ Backup no encontrado: {self.backup_file.name}")
            return False
       
        try:
            shutil.copy2(self.backup_file, self.bin_file)
            print(f"↩️  Backup restaurado: {self.bin_file.name}")
            return True
        except Exception as e:
            print(f"❌ Error restaurando backup: {e}")
            return False
   
    def reimport_texts(self, output_file: Optional[str] = None):
        """
        Reimporta los textos traducidos al archivo .bin
        ¡ADVERTENCIA! Modifica el archivo original. Haz backup primero.
        """
       
        # Verificar que hay traducciones
        translated_entries = [e for e in self.entries if e.translated]
        if not translated_entries:
            print("⚠️  No hay textos traducidos para reimportar")
            print("   Usa import_translation_csv() o edita el JSON primero")
            return False
       
        print(f"🚀 Reimportando {len(translated_entries)} textos traducidos...")
       
        # Crear backup si no existe
        if not self.backup_file.exists():
            if not self.create_backup():
                print("❌ No se pudo crear backup, abortando")
                return False
       
        # Determinar archivo de salida
        output_path = Path(output_file) if output_file else self.bin_file
       
        try:
            # Leer el archivo original
            with open(self.bin_file, 'rb') as f:
                file_data = bytearray(f.read())
           
            cambios_exitosos = 0
            errores = []
           
            for entry in translated_entries:
                # Obtener bytes de la traducción (UTF-8)
                try:
                    translated_bytes = entry.translated.encode('utf-8') + b'\x00'
                except UnicodeEncodeError as e:
                    errores.append(f"0x{entry.offset:08X}: Error UTF-8: {e}")
                    continue
               
                # Obtener bytes originales (para comparar espacio)
                original_bytes = entry.original.encode('utf-8') + b'\x00'
               
                # Calcular espacio disponible
                espacio_disponible = self._calculate_available_space(file_data, entry.offset)
               
                # Verificar que la traducción quepa
                if len(translated_bytes) <= espacio_disponible:
                    # Reemplazar en el archivo
                    file_data[entry.offset:entry.offset + len(translated_bytes)] = translated_bytes
                    cambios_exitosos += 1
                   
                    print(f"  ✓ [{cambios_exitosos:04d}] 0x{entry.offset:08X}: "
                          f"'{entry.original[:30]}...' → '{entry.translated[:30]}...'")
                else:
                    # Traducción demasiado larga
                    espacio_necesario = len(translated_bytes)
                    errores.append(
                        f"0x{entry.offset:08X}: "
                        f"Traducción muy larga ({espacio_necesario} > {espacio_disponible} bytes)"
                    )
           
            # Mostrar resumen de errores
            if errores:
                print(f"\n⚠️  Errores encontrados ({len(errores)}):")
                for error in errores[:5]:
                    print(f"   {error}")
                if len(errores) > 5:
                    print(f"   ... y {len(errores)-5} más")
           
            # Guardar archivo modificado
            with open(output_path, 'wb') as f:
                f.write(file_data)
           
            print(f"\n✅ REIMPORTACIÓN COMPLETADA:")
            print(f"   Archivo modificado: {output_path.name}")
            print(f"   Textos reimportados: {cambios_exitosos}/{len(translated_entries)}")
            print(f"   Errores: {len(errores)}")
            print(f"   Backup disponible: {self.backup_file.name}")
           
            if errores:
                print(f"\n💡 Para textos demasiado largos:")
                print(f"   1. Acorta la traducción")
                print(f"   2. Usa abreviaturas")
                print(f"   3. Mantén similar longitud al original")
           
            return True
           
        except Exception as e:
            print(f"❌ Error crítico durante reimportación: {e}")
            import traceback
            traceback.print_exc()
           
            # Intentar restaurar desde backup
            print("\n⚠️  Intentando restaurar desde backup...")
            self.restore_backup()
           
            return False
   
    def _calculate_available_space(self, data: bytearray, offset: int) -> int:
        """Calcula cuántos bytes hay disponibles hasta el próximo terminador (00)"""
        i = offset
        while i < len(data) and data[i] != 0:
            i += 1
       
        # Espacio desde offset hasta el byte 00 (inclusive)
        if i < len(data):
            return (i - offset) + 1
        return 0
   
    # ==================== HERRAMIENTAS ADICIONALES ====================
   
    def preview_changes(self):
        """Muestra una vista previa de los cambios que se realizarán"""
        if not self.entries:
            if not self.load_project():
                return
       
        translated = [e for e in self.entries if e.translated]
        if not translated:
            print("⚠️  No hay textos traducidos")
            return
       
        print("👁️  VISTA PREVIA DE CAMBIOS")
        print("=" * 100)
       
        for entry in translated[:10]:  # Mostrar solo primeros 10
            original_len = len(entry.original.encode('utf-8'))
            translated_len = len(entry.translated.encode('utf-8'))
           
            print(f"\n📍 Offset: 0x{entry.offset:08X}")
            print(f"   Original ({original_len} bytes): {entry.original}")
            print(f"   Traducido ({translated_len} bytes): {entry.translated}")
            print(f"   Diferencia: {translated_len - original_len:+d} bytes")
       
        if len(translated) > 10:
            print(f"\n... y {len(translated) - 10} textos más")
       
        print("\n" + "=" * 100)
   
    def find_text(self, search_term: str):
        """Busca texto por contenido"""
        if not self.entries:
            if not self.load_project():
                return []
       
        results = []
        search_lower = search_term.lower()
       
        for entry in self.entries:
            if search_lower in entry.original.lower():
                results.append(entry)
       
        if results:
            print(f"🔍 Encontrados {len(results)} resultados para '{search_term}':")
            for i, entry in enumerate(results[:5], 1):
                print(f"  {i}. [0x{entry.offset:08X}] {entry.original[:80]}...")
           
            if len(results) > 5:
                print(f"  ... y {len(results) - 5} más")
        else:
            print(f"❌ No se encontró '{search_term}'")
       
        return results
   
    def verify_translation_lengths(self):
        """Verifica que las traducciones no sean demasiado largas"""
        if not self.entries:
            if not self.load_project():
                return
       
        print("📏 Verificando longitudes de traducciones...")
       
        with open(self.bin_file, 'rb') as f:
            data = f.read()
       
        problemas = []
       
        for entry in self.entries:
            if entry.translated:
                espacio_disponible = self._calculate_available_space(bytearray(data), entry.offset)
                espacio_necesario = len(entry.translated.encode('utf-8')) + 1  # +1 para el byte 00
               
                if espacio_necesario > espacio_disponible:
                    problemas.append({
                        'offset': entry.offset,
                        'original': entry.original,
                        'translated': entry.translated,
                        'needed': espacio_necesario,
                        'available': espacio_disponible
                    })
       
        if problemas:
            print(f"⚠️  {len(problemas)} traducciones son demasiado largas:")
            for p in problemas[:5]:
                print(f"\n  Offset: 0x{p['offset']:08X}")
                print(f"  Original ({len(p['original'].encode('utf-8'))} bytes): {p['original']}")
                print(f"  Traducción ({p['needed']-1} bytes): {p['translated']}")
                print(f"  Necesita: {p['needed']} bytes, Disponible: {p['available']} bytes")
           
            if len(problemas) > 5:
                print(f"\n  ... y {len(problemas)-5} más")
        else:
            print("✅ Todas las traducciones caben en el espacio disponible")

# ==================== INTERFAZ DE LÍNEA DE COMANDOS ====================

def main():
    """Interfaz principal de línea de comandos"""
   
    print("=" * 70)
    print("    FATE/SAMURAI REMNANT - SISTEMA CUASICOMPLETO DE TRADUCCIÓN. Por MisWeb0hM0renoh")
    print("=" * 70)
   
    if len(sys.argv) < 2:
        print_help()
        return
   
    bin_file = sys.argv[1]
   
    try:
        system = FateTranslationSystem(bin_file)
       
        if len(sys.argv) == 2:
            # Modo por defecto: extraer
            system.extract_texts()
           
        elif len(sys.argv) >= 3:
            command = sys.argv[2].lower()
           
            if command == "extract":
                system.extract_texts()
               
            elif command == "import":
                if len(sys.argv) < 4:
                    print("❌ Especifica archivo a importar")
                    print("   Ejemplo: python fate_translate.py archivo.bin import traducciones.csv")
                    return
               
                import_file = sys.argv[3]
                system.load_project()
               
                if import_file.endswith('.csv'):
                    system.import_translation_csv(import_file)
                elif import_file.endswith('.json'):
                    system.import_translation_json(import_file)
                else:
                    print("❌ Formato no soportado. Usa .csv o .json")
                   
            elif command == "reimport":
                system.load_project()
                system.preview_changes()
               
                print("\n⚠️  ¿Continuar con la reimportación? (s/n): ", end='')
                if input().lower() == 's':
                    system.reimport_texts()
                else:
                    print("❌ Reimportación cancelada")
                   
            elif command == "preview":
                system.load_project()
                system.preview_changes()
               
            elif command == "find":
                if len(sys.argv) < 4:
                    print("❌ Especifica texto a buscar")
                    print("   Ejemplo: python fate_translate.py archivo.bin find 'Press Any'")
                    return
               
                search_term = ' '.join(sys.argv[3:])
                system.find_text(search_term)
               
            elif command == "verify":
                system.load_project()
                system.verify_translation_lengths()
               
            elif command == "backup":
                system.create_backup()
               
            elif command == "restore":
                print("⚠️  ¿Restaurar desde backup? Se perderán cambios. (s/n): ", end='')
                if input().lower() == 's':
                    system.restore_backup()
                else:
                    print("❌ Restauración cancelada")
                   
            elif command == "help":
                print_help()
               
            else:
                print(f"❌ Comando desconocido: {command}")
                print_help()
   
    except FileNotFoundError as e:
        print(f"❌ {e}")
    except Exception as e:
        print(f"❌ Error inesperado: {e}")
        import traceback
        traceback.print_exc()

def print_help():
    """Muestra ayuda de uso"""
    print("\n📚 USO:")
    print("  python fate_translate.py ARCHIVO.BIN [COMANDO] [ARGUMENTOS]\n")
   
    print("📋 COMANDOS DISPONIBLES:")
    print("  extract               - Extrae todos los textos (comando por defecto)")
    print("  import ARCHIVO        - Importa traducciones desde CSV o JSON")
    print("  reimport              - Reimporta textos traducidos al .bin")
    print("  preview               - Muestra vista previa de cambios")
    print("  find TEXTO            - Busca texto por contenido")
    print("  verify                - Verifica longitudes de traducciones")
    print("  backup                - Crea copia de seguridad")
    print("  restore               - Restaura desde copia de seguridad")
    print("  help                  - Muestra esta ayuda\n")
   
    print("🚀 EJEMPLOS:")
    print("  python fate_translate.py 170b1e1e.bin")
    print("  python fate_translate.py 170b1e1e.bin extract")
    print("  python fate_translate.py 170b1e1e.bin import traducciones.csv")
    print("  python fate_translate.py 170b1e1e.bin reimport")
    print("  python fate_translate.py 170b1e1e.bin find 'Press Any Button'\n")
   
    print("💡 CONSEJOS:")
    print("  1. Siempre haz BACKUP antes de reimportar")
    print("  2. Las traducciones NO deben ser más largas que el original")
    print("  3. Usa UTF-8 para caracteres españoles (á, é, í, ó, ú, ñ)")
    print("  4. Edita el archivo CSV con Excel o Google Sheets")

if __name__ == "__main__":
    main()

@MetakWAR
Hostias. Pues @locoroco96 creo que consiguió extraer textos y se quedó ahí si no leí mal. Esto sería top. Eres miswebosmorenos??? xDDD


Edit: desde la completa ignorancia y completo desconocimiento escribo. Sin tener ni idea del proceso de traducir, ni de los programas... si alguien tradujese el texto...¿se podría localizar automaticamente las lineas que exceden el limite y editarlas manualmente para que quepan? Si es asi a mi no me importaria hacer ese trabajo sucio, intentaria una traducción manual más corta de esa línea o me comería letras omitibles por tal de que el texto quepa. No se si es a eso a lo que te refieres, si no es eso recojo cable xD
Shiraga escribió:@MetakWAR
Hostias. Pues @locoroco96 creo que consiguió extraer textos y se quedó ahí si no leí mal. Esto sería top. Eres miswebosmorenos??? xDDD


Edit: desde la completa ignorancia y completo desconocimiento escribo. Sin tener ni idea del proceso de traducir, ni de los programas... si alguien tradujese el texto...¿se podría localizar automaticamente las lineas que exceden el limite y editarlas manualmente para que quepan? Si es asi a mi no me importaria hacer ese trabajo sucio, intentaria una traducción manual más corta de esa línea o me comería letras omitibles por tal de que el texto quepa. No se si es a eso a lo que te refieres, si no es eso recojo cable xD

Nono, al final no lo intenté porque parecia complicado a la hora de volver a empaquetarlo.
Ahora al menos hay una herramienta, aunque lo de respetar el espacio debe ser jodido, ya que en inglés suele ser mas corta la frase que en español e igual es mucho lio.
Voy a pegar un vistazo.
Edito: He probado solo con dos lineas y ya se pasaba de longitud [+risas]
locoroco96 escribió:
Shiraga escribió:@MetakWAR
Hostias. Pues @locoroco96 creo que consiguió extraer textos y se quedó ahí si no leí mal. Esto sería top. Eres miswebosmorenos??? xDDD


Edit: desde la completa ignorancia y completo desconocimiento escribo. Sin tener ni idea del proceso de traducir, ni de los programas... si alguien tradujese el texto...¿se podría localizar automaticamente las lineas que exceden el limite y editarlas manualmente para que quepan? Si es asi a mi no me importaria hacer ese trabajo sucio, intentaria una traducción manual más corta de esa línea o me comería letras omitibles por tal de que el texto quepa. No se si es a eso a lo que te refieres, si no es eso recojo cable xD

Nono, al final no lo intenté porque parecia complicado a la hora de volver a empaquetarlo.
Ahora al menos hay una herramienta, aunque lo de respetar el espacio debe ser jodido, ya que en inglés suele ser mas corta la frase que en español e igual es mucho lio.
Voy a pegar un vistazo.
Edito: He probado solo con dos lineas y ya se pasaba de longitud [+risas]


Pues nada, si el juego no quiere traducirse poco se puede hacer jaja. Muchísimas gracias a los dos por intentarlo pero ya no es plan de perder tanto tiempo en algo que va a ser un pozo sin fondo de problemas xD
No recomiendo una traducción binaria, son un dolor de muelas, lo he usado alguna vez, pero por suerte llego el autotranslator y me ahorro el suplicio, además la traducción no tendría suficiente "calidad", quedaría muy película de indios, "coger casco", "enemigo atacar", "abre puerta casa".

En cuanto al Fate y el tema en general, no comment, de donde no hay no se puede sacar. [beer]
Hay forma de sacar textos de los Disgaea?, son archivos .dat
Shiraga escribió:Una pena lo del Fate Samurai Remnant, poco más que decir.


Hola!

He recibido algún que otro mensaje privado expresando interés en Fate/Samurai Remnant y pidiendo más detalles para evaluar un posible proyecto:

  • El juego tiene alrededor de 1.7 MB de datos de texto, correspondientes a poco más de 300K palabras:
    https://www.mediafire.com/file/kzp2w6az ... s.txt/file

  • El formato de imagen es relativamente simple y es posible editarlas, aunque una primera búsqueda no ha revelado ninguna imagen con texto.

  • Los ficheros de fuente usan su propio formato de imagen, de resolución variable y combinando half-width y full-width, lo que los hace algo más difíciles de decodificar y editar. En estos casos, lo más sencillo sería modificar cada carácter como si se tratara de una imagen independiente:
    Imagen

  • No hay ningún problema en cuanto al límite de caracteres, aunque el espacio siempre estará, hasta cierto punto, limitado por el disponible en pantalla o en su ventana correspondiente.

Un saludo,

~Sky
Hola , lo primero queria agradecer las traducciones que haceis , sobre todo la de The Hundred Line , que tenia muchas ganas de jugar el juego.
Os dejo un par de juegos para ver si mas adelante podeis mirar si fuera posible su traduccion , son dos novelas visuales tipo danganronpa

Shuten Order :
https://store.steampowered.com/app/3216 ... TEN_ORDER/

Murders on the Yangtze River :
https://store.steampowered.com/app/1746 ... tze_River/

Y de nuevo muchas gracias por todo
@handil
No las he mirado, pero son juegos localizados de Unity así que en un principio debería ser posible.
Cuando termine la consolidación/revisión del Journey of Realm Dawn Dew le echaré un ojo, a no ser que alguien se me adelante. [oki]
Una consulta: he probado la traduccion del Trails in the Sky SC en formato de gog, la misma funciona de maravilla. Lo unico que queria comentar es que no aparece la letra ñ; por ej en vez de decir sueño - dice sueyno. Tal vez eso quizas se pueda corregir, sino de todas maneras es lo de menos. Y por ultimo queria preguntar si se pueden traducir los menues, items...
Muchas gracias y felicitaciones por la traduccion.
nicolasotto escribió:Una consulta: he probado la traduccion del Trails in the Sky SC en formato de gog, la misma funciona de maravilla. Lo unico que queria comentar es que no aparece la letra ñ; por ej en vez de decir sueño - dice sueyno. Tal vez eso quizas se pueda corregir, sino de todas maneras es lo de menos. Y por ultimo queria preguntar si se pueden traducir los menues, items...
Muchas gracias y felicitaciones por la traduccion.

ya se avisó que existe ese error porque no reconoce la ñ, y se eligió el ny
¿No quedaría mejor solo la n?
Tengo sueno. [maszz]
shadowman1 escribió:¿No quedaría mejor solo la n?
Tengo sueno. [maszz]


Yo pienso que es mejor la NY ya que fonéticamente suena como la Ñ, a parte tenemos el ejemplo del catalán, que no tiene Ñ y usa NY.
nicolasotto escribió:Una consulta: he probado la traduccion del Trails in the Sky SC en formato de gog, la misma funciona de maravilla. Lo unico que queria comentar es que no aparece la letra ñ; por ej en vez de decir sueño - dice sueyno. Tal vez eso quizas se pueda corregir, sino de todas maneras es lo de menos. Y por ultimo queria preguntar si se pueden traducir los menues, items...
Muchas gracias y felicitaciones por la traduccion.


Ese error es típico de los juegos Falcom "antiguos". Usan la codificación japonesa de caracteres (Shift-JIS) y no pillan ni la ñ ni las vocales acentuadas. Si es como el Ys VI el problema es solo con las minúsculas y debería poder arreglarse, aunque implica tocar la fuente del juego y la traducción.
@Aion
Para eso hace falta alguien que controle de fuentes, imagino que tendrá una copia del texto con acentos, etc.
Tampoco vendría mal alguien que añada las fuentes latinas al Kingdom of the Dump, y el OPUS: Echo of Starsong para poder meter una versión con acentos y ñ.

Pero para eso hace falta gente que controle y este dispuesta a ayudar. [beer]

Por cierto el Journey of Realm Dawn Dew imagino que ya se podrá jugar, ya que la traducción IA está muy bien y bien consolidada, aunque eso no quita que haya que revisarlo y cambiar lo que no esta bien, aunque por suerte no hay mucho que cambiar, eso sí, el peor texto a revisar que me he encontrado con diferencia. [buaaj]
shadowman1 escribió:@Aion
Para eso hace falta alguien que controle de fuentes, imagino que tendrá una copia del texto con acentos, etc.
Tampoco vendría mal alguien que añada las fuentes latinas al Kingdom of the Dump, y el OPUS: Echo of Starsong para poder meter una versión con acentos y ñ.

Pero para eso hace falta gente que controle y este dispuesta a ayudar. [beer]

Por cierto el Journey of Realm Dawn Dew imagino que ya se podrá jugar, ya que la traducción IA está muy bien y bien consolidada, aunque eso no quita que haya que revisarlo y cambiar lo que no esta bien, aunque por suerte no hay mucho que cambiar, eso sí, el peor texto a revisar que me he encontrado con diferencia. [buaaj]


Había una herramienta de codificación donde tú personalizabas los simbolos mediante mapeo, pero suena bastante tedioso.

Con esto

https://github.com/ZhenjianYang/SoraTranslation-Tools
Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya la había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]


Con qué herramienta lo lograste? :o, anda que no me he comido la cabeza para intentar ayudaros con esto.. es la versión de NISA?
malanior escribió:
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya la había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]


Con qué herramienta lo lograste? :o, anda que no me he comido la cabeza para intentar ayudaros con esto.. es la versión de NISA?

Con el eddcompiler, la que llevo usando de momento :p
Lo de la versión no tengo ni idea de cual es [+risas]
locoroco96 escribió:
malanior escribió:
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya la había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]


Con qué herramienta lo lograste? :o, anda que no me he comido la cabeza para intentar ayudaros con esto.. es la versión de NISA?

Con el eddcompiler, la que llevo usando de momento :p
Lo de la versión no tengo ni idea de cual es [+risas]


Es la de Vita?
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]

Estoy alucinando como en cuestion de dias estas traduciendo todos los juegos de la saga 1 por 1... es que es como un sueño, no me lo creo.
Tío, un monumento se te queda corto a ti.
Perdonad, en el azure no es eddcompiler, es con el calmare. Hacia dias que extraje los scripts de los juegos que tengo de trails y ya pensaba que era el eddcompiler. [jaja
https://github.com/Kyuuhachi/Aureole
locoroco96 escribió:Perdonad, en el azure no es eddcompiler, es con el calmare. Hacia dias que extraje los scripts de los juegos que tengo de trails y ya pensaba que era el eddcompiler. [jaja
https://github.com/Kyuuhachi/Aureole

Me viene hasta bien que traduzcas primero el Azure, que es al que voy ahora y así puedo testearlo bien.
¿Puedo ir corrigiéndolo por mi cuenta o prefieres que vaya apuntando erratas?

Por cierto, como has encontrado la herramienta? Por más que hemos buscado varios no hemos dado nunca con ella.

Por cierto, si tienes pensado ponerte con el Cold Steel, había un proyecto iniciado por un equipo, creo que de Tradusquare, que se anunció en 2017 o así y nunca llegó a lanzarse, pero creo que la tradu si no se acabó quedó muy cerca. @kjavi me parece que estuvo en ese proyecto.
locoroco96 escribió:Perdonad, en el azure no es eddcompiler, es con el calmare. Hacia dias que extraje los scripts de los juegos que tengo de trails y ya pensaba que era el eddcompiler. [jaja
https://github.com/Kyuuhachi/Aureole


Ese lo estuve viendo, pero creía que no era para zero/azure! gracias por compartir conocimiento.
Vli escribió:
locoroco96 escribió:Perdonad, en el azure no es eddcompiler, es con el calmare. Hacia dias que extraje los scripts de los juegos que tengo de trails y ya pensaba que era el eddcompiler. [jaja
https://github.com/Kyuuhachi/Aureole

Me viene hasta bien que traduzcas primero el Azure, que es al que voy ahora y así puedo testearlo bien.
¿Puedo ir corrigiéndolo por mi cuenta o prefieres que vaya apuntando erratas?

Por cierto, como has encontrado la herramienta? Por más que hemos buscado varios no hemos dado nunca con ella.

Por cierto, si tienes pensado ponerte con el Cold Steel, había un proyecto iniciado por un equipo, creo que de Tradusquare, que se anunció en 2017 o así y nunca llegó a lanzarse, pero creo que la tradu si no se acabó quedó muy cerca. @kjavi me parece que estuvo en ese proyecto.

Lo de corregir no me importa hacerlo, siempre que se ponga la frase original y se ponga como debería ser (ya que se entiende el contexto jugando).
Si quieres corregir tu pues yo voy adelantando los siguientes. [sonrisa]
La herramienta no se ni como la encontré .
Y sobre los cold steel antes de ponerme con el 2 estuve pegando un ojo a los ficheros y aunque pude extraer archivos, no llegué a buen puerto..
Tendría que volver a mirar con todas las páginas que he ido guardando en favoritos. [+risas]
Cuando acabe con azure y zero me pondré con los daybreaks.
El Cold Steel lo tiene entre manos @Ancalagon el negro, la última vez que le pregunté me dijo que lo tenía casi acabado, así que si alguien se pone con algun Cold Steel que sea a partir del 2.
PHANTASIA escribió:El Cold Steel lo tiene entre manos @Ancalagon el negro, la última vez que le pregunté me dijo que lo tenía casi acabado, así que si alguien se pone con algun Cold Steel que sea a partir del 2.


la madre que me parió
Buenas, podrian revisar la traduccion del Ai the somnium files nirvanA initiative, el texto del juego no avanza cada que hay una trivia, lo que en resumen hace el juego injugable, tambien se crashea al abrir el log.
Lo primero de todo, muchísimas gracias por la labor que estáis haciendo.
Una duda ¿Este tema de las tradus automáticas sirven para juegos antiguos? ¿Se podría mirar el marvel ultimate alliance 2?
El primero si recibió traducción pero el segundo se quedó ahí. [triston]
PeronchoCraft escribió:Buenas, podrian revisar la traduccion del Ai the somnium files nirvanA initiative, el texto del juego no avanza cada que hay una trivia, lo que en resumen hace el juego injugable, tambien se crashea al abrir el log.

Puedes subirme la partida guardarda? para ir directo al problema.
Un saludo.
@locoroco96 Desde el inicio del juego me ocurre mas para ser precisos, en la parte en la que aparece el cuerpo en el campo, cuando hablo con ciertos personajes el dialogo no avanza y queda el mismo dialogo sin mostrar la trivia de tama que aparece en la parte superior de la pantalla, si puedo te paso un save pero mi teoria es que puede ser que tenga una version vieja del juego ya que lo descargue de jack sparrow.
Buenas muchachos traductores, vengo a poner una pequeña sugerencia, veran la mayoria de los juegos de la saga atelier no estan traducidos(a excepcion del yumia) y existe una herramienta capaz de desempaquetar todos los archivos de la mayoria de los juegos de atelier en general(incluso los mas nuevos) si quieren echarle un ojo esta es la herramienta https://github.com/VitaSmith/gust_tools en el 99% de los casos el texto del juego se encuentra en el archivo PACK01.PAK.

Edit:Encontre otra herramienta que te facilita la traduccion https://github.com/Ferripro321/Atelier-Translator
Aion escribió:
nicolasotto escribió:Una consulta: he probado la traduccion del Trails in the Sky SC en formato de gog, la misma funciona de maravilla. Lo unico que queria comentar es que no aparece la letra ñ; por ej en vez de decir sueño - dice sueyno. Tal vez eso quizas se pueda corregir, sino de todas maneras es lo de menos. Y por ultimo queria preguntar si se pueden traducir los menues, items...
Muchas gracias y felicitaciones por la traduccion.


Ese error es típico de los juegos Falcom "antiguos". Usan la codificación japonesa de caracteres (Shift-JIS) y no pillan ni la ñ ni las vocales acentuadas. Si es como el Ys VI el problema es solo con las minúsculas y debería poder arreglarse, aunque implica tocar la fuente del juego y la traducción.


Entiendo, es lo de menos.
Dejo por aquí las ultimas revisiones de un par de tradus.

Kings Quest Chapter 1 y 2 - Corrige pequeños errores gramaticales

Underrail 0.62 - Corrige algunas cosillas y textos.

Tambien he actualizando el instalador, que estaba teniendo muchas quejas por steam de falsos positivos. Le hacia falta el pobre tenia ya cerca de 15 años, y lo usaba principalmente por pereza XD. El nuevo esta más actualizado a los actuales estándares, es 'algo' mejor visualmente, y auto detecta rutas de steam y epic para aplicar las tradus automaticamente. Sigue teniendo el problema de no ser una aplicación firmada con certificado, pero para proyectos fanmade no voy a gastar pastuki. [360º].

Saludos [bye]
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]



Dios mío … eres el amo de los amos ! Vas a ser legendario ! Esos juegos llevan en inglés 20 años y tú en unos días los has dejado en español !

Todos mis respetos
ocyrus escribió:
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]



Dios mío … eres el amo de los amos ! Vas a ser legendario ! Esos juegos llevan en inglés 20 años y tú en unos días los has dejado en español !

Todos mis respetos

No nos vegamos arriba que solo se puede traducir los diálogos [+risas]
Los objetos, armas etc no encuentro forma de traducirlo.
@locoroco96
Malakito consiguió traducir casi todo en el FC, pero era con ayuda de un dev que hizo las herramientas, no sé si se dignaría a facilitarlas para Zero/Azure y servirán las mismas
Vli escribió:@locoroco96
Malakito consiguió traducir casi todo en el FC, pero era con ayuda de un dev que hizo las herramientas, no sé si se dignaría a facilitarlas para Zero/Azure y servirán las mismas

La herramienta es translation framework2, pero solo funciona con el trails 1. :(
locoroco96 escribió:
Vli escribió:@locoroco96
Malakito consiguió traducir casi todo en el FC, pero era con ayuda de un dev que hizo las herramientas, no sé si se dignaría a facilitarlas para Zero/Azure y servirán las mismas

La herramienta es translation framework2, pero solo funciona con el trails 1. :(


Por si te sirve

Estoy usando falcom tools, y he podido extraer DT. Los archivos de magia están el el dt22

Con T magic converter puedes extraer el archivo t_magic._DT en un json, y supongo que habrá una vuelta de hacer lo inverso.

Imagen

En la foto se puede ver Petrify Breath etc etc


Luego, guardáis el json modificado y hacéis lo inverso. Es decir, pasáis el t_magic.json por el .exe del programa t_magic converter, luego usáis dos opciones o el dll de aureole suite, o usáis ed6back (este no me va por el w11 gracioso que me decía que era un archivo perjudicial y ya no me dejaba seguir y no tenía ganas de quitar permisos etc etc)

Una vez realizado el proceso, yo lo que hice es usar el dll de aureole suite, creamos una carpeta ./data/ y metemos el la carpeta DT en ella, abrimos el juego y ya está

Imagen

Imagen

He cambiado solo "Lágrima"

Espero que os ayude!

PD: Muchas gracias a los que hacen estas herramientas, que nos permiten realizar esto.
malanior escribió:
locoroco96 escribió:
Vli escribió:@locoroco96
Malakito consiguió traducir casi todo en el FC, pero era con ayuda de un dev que hizo las herramientas, no sé si se dignaría a facilitarlas para Zero/Azure y servirán las mismas

La herramienta es translation framework2, pero solo funciona con el trails 1. :(


Por si te sirve

Estoy usando falcom tools, y he podido extraer DT. Los archivos de magia están el el dt22

Con T magic converter puedes extraer el archivo t_magic._DT en un json, y supongo que habrá una vuelta de hacer lo inverso.

Imagen

En la foto se puede ver Petrify Breath etc etc

Espero que os ayude!

Ostras!!
Voy a echarle un vistazo a esa herramienta. Ahora os cuento!
Gracias @malanior
locoroco96 escribió:
malanior escribió:
locoroco96 escribió:La herramienta es translation framework2, pero solo funciona con el trails 1. :(


Por si te sirve

Estoy usando falcom tools, y he podido extraer DT. Los archivos de magia están el el dt22

Con T magic converter puedes extraer el archivo t_magic._DT en un json, y supongo que habrá una vuelta de hacer lo inverso.

Imagen

En la foto se puede ver Petrify Breath etc etc

Espero que os ayude!

Ostras!!
Voy a echarle un vistazo a esa herramienta. Ahora os cuento!
Gracias @malanior


Es una maravilla la herramienta de extracción de falcom

PD: Creo que con esta maravilla podríamos tener voces también

Imagen
locoroco96 escribió:
ocyrus escribió:
locoroco96 escribió:Yo probé esa herramienta (o otra muy parecida) pero nada..Había un paso de donde no conseguia pasar porque el .bat no hacia nada.
Ya se puede ver la primera línea de diálogo en el azure despues de traducir 82.000 líneas [+risas]
https://ibb.co/yc66447D
Ya sé que es la segunda parte, pero cuando me di cuenta ya había empezado a traducir y ya no quería volver atrás XD
86.000/140.000 [looco]



Dios mío … eres el amo de los amos ! Vas a ser legendario ! Esos juegos llevan en inglés 20 años y tú en unos días los has dejado en español !

Todos mis respetos

No nos vegamos arriba que solo se puede traducir los diálogos [+risas]
Los objetos, armas etc no encuentro forma de traducirlo.


Es suficiente los diálogos ! Así que sigo manteniendo lo que dije !

Por cierto chicos hay herramientas de doblaje de IA que quedan muy bien ya a día de hoy y por lo visto sería tan rápido de doblar juegos en inglés como las traducccuones ! Deberíamos echarle un vistazo a eso también
malanior escribió:
locoroco96 escribió:
malanior escribió:
Por si te sirve

Estoy usando falcom tools, y he podido extraer DT. Los archivos de magia están el el dt22

Con T magic converter puedes extraer el archivo t_magic._DT en un json, y supongo que habrá una vuelta de hacer lo inverso.

Imagen

En la foto se puede ver Petrify Breath etc etc

Espero que os ayude!

Ostras!!
Voy a echarle un vistazo a esa herramienta. Ahora os cuento!
Gracias @malanior


Es una maravilla la herramienta de extracción de falcom

PD: Creo que con esta maravilla podríamos tener voces también

Imagen


Si se le puede poner voces en japones junto la traducción, seria perfecto.
Ahora solo faltaría poder editar la fuente para la ñ y los acentos, no se si con este programa se podrían extraer, editarlas y después volverlas a insertar, pero si no tal como esta mas las voces ya seria mas que suficiente.
Je, je, cuanta actividad [plas] , os echaría una mano pero ahora mismo estoy tirando de colirio gracias al último juego. [+risas]
Bueno. Os traigo novedades.
Los nombres de las artes ya se pueden traducir, al menos en el sc y 3rd. En el azure se extrae bien pero al empaquetarlo da fallo. Tengo que ver si tiene solución.
https://ibb.co/VpxB0RWt
(El "tear" se la a colado al traductor [carcajad] )
Gracias a @malanior por descubrir la herramienta, y ahora esta intentando hacer una para poder traducir los objetos. Mucha suerte [beer]
@shadowman1, ánimo. [+risas]
Enhorabuena por todo, sois el no va más, la pena es que el nuevo no se puede ,el TLOH: Trails Beyond the Horizon, pk llevo 5 horas de juego y hablan muchísimo en el y traducir de cabeza jajaja. Pero todo genial lo que haceis
kenyonmartin escribió:Enhorabuena por todo, sois el no va más, la pena es que el nuevo no se puede ,el TLOH: Trails Beyond the Horizon, pk llevo 5 horas de juego y hablan muchísimo en el y traducir de cabeza jajaja. Pero todo genial lo que haceis

Se puede a medias. Te recomiendo que lo dejes por ahora hasta que me ponga con el. XD
El texto del dialogo se puede traducir menos el que sale en las batallas.
locoroco96 escribió:Bueno. Os traigo novedades.
Los nombres de las artes ya se pueden traducir, al menos en el sc y 3rd. En el azure se extrae bien pero al empaquetarlo da fallo. Tengo que ver si tiene solución.
https://ibb.co/VpxB0RWt
(El "tear" se la a colado al traductor [carcajad] )
Gracias a @malanior por descubrir la herramienta, y ahora esta intentando hacer una para poder traducir los objetos. Mucha suerte [beer]
@shadowman1, ánimo. [+risas]


Estoy cansado ya xD, he intentado hacer 20 scripts y no se lleva nada bien el juego con los punteros a saber como está hecho, lo máximo que he conseguido.

Al añadir una sola palabra en Español, hay un desbordamiento de punteros

Imagen
En esto de localizar videojuegos hay alternativas que lo hacen "en vivo" (en ejecución) -y otros, como pueden ser subtítulos de alguna película o serie que carece de doblaje o de ello-, que no sé si sabríais de su existencia o si os sería de utilidad, pero hacen maravillas con aquellos que no se pueden -incluidos muy antiguos en emulador-, son difíciles o imposibles directamente de alterar su texto; también podría ser empleado como una primera aproximación antes de empezar a traducir o como apoyo a la nuestra "mental en vivo", como cuando usamos la Wikipedia o una Wiki como preámbulo a leer un manual especializado sobre algún tema en concreto.

Es problemática configurarla y algunas veces se cierra sola con errores, pero una vez está lista, este programa es capaz de localizar cualquier texto mostrado en pantalla al idioma que prefiráis en vivo: su funcionamiento es básico, hace a cada X fotogramas una captura de pantalla en la memoria seguido de un análisis OCR de esta y emplaza ventanas de texto con la fuente y tamaño de letras aproximados o iguales a estas -tiene cierto retardo que varía según el tiempo que tarde en procesar los textos, el cual depende de si se utilizan diccionarios de texto locales en abierto o lo hace a través de algún servicio Web tipo DeepLTranslate, Google Translator, etc. Incluso en las últimas versiones, se puede configurar para que funcione a través según qué IA; yo la uso con diccionarios en local por el tema de los recursos, privacidad, estar offline y lo limitado artificialmente que son a veces los servicios en línea empresauriales, me es útil cuando juego con mods "overhaul" en constante actualización y cambio que solo están en anglosajón, como en Cave2Cosmos para CIV IV-. Esta aplicación de código abierto se llama MORT, se puede descargar directamente de su GitHub; sé que no es comparable a una traducción tradicional, pero espero que os sea de utilidad y haga un apaño allá donde no existe alternativa.

Como he señalado, también se puede emplear con otros programas -por ejemplo, programas de edición y diseño no conocidos o populares, emuladores... e incluso con documentos digitales no localizados, ¿recordáis aquella novela o manual que conseguisteis en versión digital, pero por su rareza o desinterés de las editoriales solo está en su versión original? Puede ser hasta entretenido y en cierta medida educativo, puedes hasta configurarlo con algún idioma regional, por ejemplo, que te traduzca en catalán, vasco, etc.- Ah, la probé sobre otras aplicaciones de otro tipo que crean capas de imagen en pantalla, como Lossless Scaling, y sí, funciona (hay que usar MORT antes, sobre la ventana del programa). Aparte, hay otros programas que realizan labores similares a MORT como ZTranslate -este último es una especie de híbrido quimérico que emplea archivos de texto propios, ya sean de origen por máquina o traducciones artesanas, que los muestra sobre los originales que el programa detecta en OCR (este no lo he probado, pero hay quien dice maravillas), este último puede ser una gran alternativa en PC para quien localiza videojuegos, para cuando no hay manera de modificar los archivos originales o "inyectar" desde fuera-.

Si este mensaje no tiene relación ni corresponde a este hilo, tan solo borradlo. Espero que os sirva.
elokillo escribió:Hola

Sabeis si se puede traducir el Deathbulge: Battle of the Bands

Gracias!

Alguien sabe si es traducible este juego?

Está es la página de Steam, muchas gracias!!

https://store.steampowered.com/app/1083 ... the_Bands/
3158 respuestas
160, 61, 62, 63, 64