Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 23
rrf Va por buen camino
Wink

Hola Aposi.

Aquí te incluyo una función que elaboré para resolver el problema de las comillas dobles y de algunos otros caracteres ( ' < > =).


Código Delphi [-]
Function rt ( bb: string ) : string ;
var
  a1  : string ;
  d1, d2 : array [1..5] of String ;
  cc : integer ;
begin

      // Reemplaza caracteres especiales mal traducidos
      //-------------------------------------------------

  a1 := bb ;
  d1 [1] := '\u0026#39;' ;       d2 [1] := '''' ;   // Comilla simple: '
  d1 [2] := '\u0026gt;' ;        d2 [2] := '>' ;
  d1 [3] := '\u0026lt;' ;        d2 [3] := '<' ;
  d1 [4] := '\u003d' ;           d2 [4] := '=' ;
  d1 [5] := '\u0026quot;' ;      d2 [5] := '"' ;   // Comilla doble: "

  for cc := 1 to 5 do
    if 0 < pos ( d1 [cc], a1 )
      then a1 := StringReplace( a1, d1 [cc], d2 [cc], [ rfReplaceAll ] ) ;

  result := a1 ;

end;

En la función, se usaron Array para que fuera fácil ampliar el número de caracteres que queden mal traducidos. Están incluidos los que a mí me dieron problemas, pero seguramente deben haber muchos más; por ejemplo "¿" o "¡" posiblemente den problemas.

Para llamar a esta función, sería algo así (aa es una variable tipo string):

Código Delphi [-]
  aa := 'Texto a traducir usando Google Translator' ;
  aa := GoogleTranslate(Source, Target, aa) ;

              // Eliminar caracteres especiales mal traducidos
  aa := rt ( aa ) ;

Puedes usar solo la parte que te interese de este código y, con un par de ajustes, lo tienes resuelto.

Saludos.

Última edición por rrf fecha: 25-11-2010 a las 17:00:19.
Responder Con Cita
  #2  
Antiguo 25-11-2010
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 159
Poder: 20
aposi Va por buen camino
gracias, lo aplicare al programa
Responder Con Cita
  #3  
Antiguo 07-11-2011
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 159
Poder: 20
aposi Va por buen camino
hola de nuevo,
google ha cerrado la api del traductor y he encontrado que microsoft tinen tambien una api.
he encontrado el siguiente codigo para utilizar esta api

Código Delphi [-]
 const    
 MicrosoftTranslatorTranslateUri = 'http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=%s&text=%s&from=%s&to=%s';
        //this AppId if for demo only please be nice and use your own , it's easy get one from here http://msdn.microsoft.com/en-us/library/ff512386.aspx    
BingAppId                       = '7FA9D0A8FB6B194BE57E92B286FCAF0B774883F3';
    Msxml2_DOMDocument              = 'Msxml2.DOMDocument.6.0';   


function TDML.TranslateText(const AText, SourceLng, DestLng: string): string;
var
   XmlDoc : OleVariant;
   Node   : OleVariant;
begin
  Result:=WinInet_HttpGet(Format(MicrosoftTranslatorTranslateUri,[BingAppId,AText,SourceLng,DestLng]));
  XmlDoc:= CreateOleObject(Msxml2_DOMDocument);
  try
    XmlDoc.Async := False;
    XmlDoc.LoadXML(Result);
    if (XmlDoc.parseError.errorCode <> 0) then
     raise Exception.CreateFmt('Error in Xml Data %s',[XmlDoc.parseError]);
    Node:= XmlDoc.documentElement;
    if not VarIsClear(Node) then
     Result:=XmlDoc.Text;
  finally
     XmlDoc:=Unassigned;
  end;

end;

procedure TDML.WinInet_HttpGet2(const Url: string; Stream: TStream);
const
BuffSize = 1024*1024;
var
  hInter   : HINTERNET;
  UrlHandle: HINTERNET;
  BytesRead: Longword;
  Buffer   : Pointer;
begin
  hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(hInter) then
    try
      Stream.Seek(0,0);
      GetMem(Buffer,BuffSize);
      try
          UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
          if Assigned(UrlHandle) then
          begin
            repeat
              InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
              if BytesRead>0 then
               Stream.WriteBuffer(Buffer^,BytesRead);
            until BytesRead = 0;
            InternetCloseHandle(UrlHandle);
          end;
      finally
        FreeMem(Buffer);
      end;
    finally
     InternetCloseHandle(hInter);
    end;

end;

function TDML.WinInet_HttpGet(const Url: string): string;
Var
  StringStream : TStringStream;
begin
  Result:='';
    StringStream:=TStringStream.Create('');
    try
        WinInet_HttpGet2(Url,StringStream);
        if StringStream.Size>0 then
        begin
          StringStream.Seek(0,0);
          Result:=StringStream.ReadString(StringStream.Size);
        end;
    finally
      StringStream.Free;
    end;

end;

el probela que tengo es que estoy trabajando con delphi 6 y en el codigo que encontre utiliza la siguiente declaración :

Código Delphi [-]
StringStream:=TStringStream.Create('',TEncoding.UTF8);


esto no funciona con mi delphi y no se como passar a UTF8 el resultado de la traducción

Última edición por aposi fecha: 07-11-2011 a las 12:07:04.
Responder Con Cita
  #4  
Antiguo 04-10-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por marisbelly Ver Mensaje
...
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración


Ya has hecho la pregunta en otro hilo y se está tratando, no repitas lo mismo en otros.
Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Está la interfaz de Delphi disponible en español? natalia OOP 19 22-04-2007 00:32:17
Traducir al Ingles omy Varios 3 22-11-2006 05:49:07
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
Traducir texto a voz Jose Manuel API de Windows 1 27-04-2004 22:37:28
Traducir Un chat que está en Inglés Luis F. Orjuela Internet 2 26-02-2004 01:55:03


La franja horaria es GMT +2. Ahora son las 20:47:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi