elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch multi-idiomas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Batch multi-idiomas  (Leído 9,266 veces)
z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Batch multi-idiomas
« en: 24 Mayo 2012, 17:42 pm »

Hola amigos, hay alguna forma de hacer un batch multi-idiomas, es decir yo tengo un batch. Y desde varios archivos de configuracion tengo los idiomas, hay alguna forma? o algo alternativo?

Gracias  y un saludo.
Si no hay ninguna forma da igual, tengo otra que es un poco chapucera pero bueno.


En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Batch multi-idiomas
« Respuesta #1 en: 24 Mayo 2012, 18:25 pm »

Método 1:

Spanish.ini
Código:
1=Bienvenido a mi programa
2=Porfavor seleccione una opcion para continuar...
3=Codeado por Elektro H@cker
4=opcion

English.ini
Código:
1=Welcome to my program
2=Please choose an option to continue...
3=Coded by Elektro H@cker
4=option

test.bat
Código
  1. @Echo OFF
  2.  
  3. Echo What language you will to use? \ Que lenguaje quiere usar? | MORE
  4. Echo [1] English, [2] Spanish, [3] Catalan.                     | MORE
  5. Choice /C 123 /M "Choose a language"
  6. If %Errorlevel% EQU 1 (Set LANG=English)
  7. If %Errorlevel% EQU 2 (Set LANG=Spanish)
  8.  
  9. For /F "Tokens=2 Delims==" %%a in ('Type "%LANG%.ini" ^| Find "1="') Do (set saludo=%%a)
  10. For /F "Tokens=2 Delims==" %%a in ('Type "%LANG%.ini" ^| Find "2="') Do (set Selecciona=%%a)
  11. For /F "Tokens=2 Delims==" %%a in ('Type "%LANG%.ini" ^| Find "3="') Do (set autor=%%a)
  12. For /F "Tokens=2 Delims==" %%a in ('Type "%LANG%.ini" ^| Find "4="') Do (set opcion_menu=%%a)
  13.  
  14. :Menu
  15. Echo %Saludo%
  16. Echo %autor%           | MORE
  17. Echo %Selecciona%      | MORE
  18. Echo: %opcion_menu% 1
  19. Echo: %opcion_menu% 2
  20. Echo: %opcion_menu% 3  | MORE
  21.  
  22. Set /P option= ^>^>



Método 2:

Código
  1. @Echo OFF
  2.  
  3. Goto :Program
  4. :Langs
  5. If /I "%lang%" EQU "English" (
  6. Title Language Test Menu
  7. Set saludo=Welcome to my program
  8. Set Selecciona=Please choose an option to continue...
  9. Set opcion_menu=Option
  10. Set Autor=Coded by Elektro H@cker
  11. )
  12.  
  13. If /I "%lang%" EQU "Spanish" (
  14. Title Test de menu de idiomas
  15. Set saludo=Bienvenido a mi programa
  16. Set Selecciona=Porfavor seleccione una opcion para continuar...
  17. Set opcion_menu=Opcion
  18. Set Autor=Codeado por Elektro H@cker
  19. )
  20.  
  21. If /I "%lang%" EQU "Catalan" (
  22. Title Test de menu d'idiomes
  23. Set saludo=Benvingut al meu programa
  24. Set Selecciona=Si us plau seleccioneu una opcio per continuar ...
  25. Set opcion_menu=Opcio
  26. Set Autor=Codeaixat per Elektro H@cker
  27. )
  28. Goto :EOF
  29.  
  30. :Program
  31. Echo What language you will to use? \ Que lenguaje quiere usar? \ Que llenguatge voleu utilitzar? | MORE
  32. Echo [1] English, [2] Spanish, [3] Catalan.                                                       | MORE
  33. Choice /C 123 /M "Choose a language"
  34. If %Errorlevel% EQU 1 (Set LANG=English)
  35. If %Errorlevel% EQU 2 (Set LANG=Spanish)
  36. If %Errorlevel% EQU 3 (Set LANG=Catalan)
  37. Call :Langs
  38.  
  39. :Menu
  40. Echo %Saludo%
  41. Echo %autor%           | MORE
  42. Echo %Selecciona%      | MORE
  43. Echo: %opcion_menu% 1
  44. Echo: %opcion_menu% 2
  45. Echo: %opcion_menu% 3  | MORE
  46.  
  47. Set /P option= ^>^>



Los dos codes dan el mismo resultado:






Saludos!


En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Batch multi-idiomas
« Respuesta #2 en: 24 Mayo 2012, 19:08 pm »

Wow! Gracias, me voy a tirar un siglo entero para adaptarlo a mi code pero bueno... XD  :¬¬  :xD

Edito: Y si lo quiero hacer con if? que es como yo se... es decir... tengo:

Código:
:LANG
echo Idiomas disponibles:
echo [0 - Inglés]
echo [1 - Español]
echo.
set /p "lang=>> "
if not defined lang goto:LANG
if "%lang%"=="0" goto:ENG
if "%lang%"=="b" goto:SPA
pause

Como lo deberia hacer?, que deberia poner en SPA y ENG???
« Última modificación: 24 Mayo 2012, 19:11 pm por Seazoux » En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Batch multi-idiomas
« Respuesta #3 en: 24 Mayo 2012, 19:35 pm »

Edito: Y si lo quiero hacer con if? que es como yo se... es decir... tengo:
Código:
if "%lang%"=="0" goto:ENG
if "%lang%"=="b" goto:SPA
pause
¿que deberia poner en SPA y ENG???

Pues si lo quieres hacer así, Deberías duplicar el código dentro del propio bat...

Código
  1. :Eng
  2. El código entero en ingles...
  3.  
  4. :Spa
  5. El código entero en español...

PD: Bueno no es necesario duplicarlo todo... a las funciones importantes donde no haya texto que mostrar (En ningun idioma) las puedes llamar usando CALL...
En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Batch multi-idiomas
« Respuesta #4 en: 24 Mayo 2012, 21:09 pm »

Pues si lo quieres hacer así, Deberías duplicar el código dentro del propio bat...

Código
  1. :Eng
  2. El código entero en ingles...
  3.  
  4. :Spa
  5. El código entero en español...

PD: Bueno no es necesario duplicarlo todo... a las funciones importantes donde no haya texto que mostrar (En ningun idioma) las puedes llamar usando CALL...

Voy a hacerte como iria, a ver si va bien:

Tengo los Inis: esp.ini, eng.ini; por ejemplo

Luego,
Yo tengo un bat, me pide el idioma, ok.
Cuando lo selecciona pongo por ejemplo:
Código
  1. if "%lang%"=="0" echo esp > lang.txt
  2. if "%lang%"=="1" echo eng > lang.txt
  3.  
Luego:

Código
  1. for /f "tokens=*" %%x in (lang.txt) do (%%x
  2. set "lang1=%%x")
  3.  
  4. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "1="') Do (set saludo=%%a)
  5. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "2="') Do (set Selecciona=%%a)
  6. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "3="') Do (set autor=%%a)
  7. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "4="') Do (set opcion_menu=%%a)

Todo esto al principio del Batch, claro...

Que como lo ves?

por cierto, eso de |MORE, que hace...

Un saludo.
« Última modificación: 24 Mayo 2012, 21:10 pm por EleKtro H@cker » En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Batch multi-idiomas
« Respuesta #5 en: 24 Mayo 2012, 21:20 pm »


Código
  1. if "%lang%"=="0" echo esp > lang.txt
  2. if "%lang%"=="1" echo eng > lang.txt
  3.  
  4. for /f "tokens=*" %%x in (lang.txt) do (%%x
  5. set "lang1=%%x")
  6.  
  7. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "1="') Do (set saludo=%%a)
  8. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "2="') Do (set Selecciona=%%a)
  9. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "3="') Do (set autor=%%a)
  10. For /F "Tokens=2 Delims==" %%a in ('Type "%lang1%.ini" ^| Find "4="') Do (set opcion_menu=%%a)

No entiendo la intención de escribir "esp" o "eng" en un archivo de texto, Y luego usar un for para setear el lenguaje según lo que haya escrito ene l texto... Si puedes hacer esto como te puse en mis ejemplos:

Código
  1. @echo off
  2. Echo Escribe "ESP" o "ENG"
  3. Set /P option=
  4. Set Lang=%option%
  5.  
  6. For /F "Tokens=2 Delims==" %%a in ('Type "%lang%.ini" ^| Find "1="') Do (set saludo=%%a)
  7. For /F "Tokens=2 Delims==" %%a in ('Type "%lang%.ini" ^| Find "2="') Do (set Selecciona=%%a)
  8. For /F "Tokens=2 Delims==" %%a in ('Type "%lang%.ini" ^| Find "3="') Do (set autor=%%a)
  9. For /F "Tokens=2 Delims==" %%a in ('Type "%lang%.ini" ^| Find "4="') Do (set opcion_menu=%%a)
  10.  

Citar
C:\> more /?
Muestra la información pantalla a pantalla.

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [unidad:][ruta]archivo
comando | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
MORE /E [/C] [/P] [/S] [/Tn] [+n] [archivos]

En este caso lo uso para ahorrar lineas y no tener que escribir "Echo+" para insertar una linea en blanco.

Saludos.
En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Batch multi-idiomas
« Respuesta #6 en: 25 Mayo 2012, 08:25 am »

Es para guardar la configuración.
En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Batch multi-idiomas
« Respuesta #7 en: 25 Mayo 2012, 08:36 am »

Es para guardar la configuración.

ahmmm vale vale, pero entonces esto dejalo asi:

Código
  1. for /f "tokens=*" %%x in (lang.txt) do (set "lang1=%%x")

O mejor aún, Guarda la configuración en el propio bat (Al final del archivo)

Código
  1. @Echo OFF
  2.  
  3. Set lang=0
  4.  
  5. if "%lang%"=="0" (Echo+ & Echo SaveLang=esp)>>"%~0"
  6. if "%lang%"=="1" (Echo+ & Echo SaveLang=eng)>>"%~0"
  7.  
  8. for /f "tokens=2 delims==" %%x in ('Find "SaveLang" "%~0" ^| Find /V "%~0"') do (set "lang1=%%x")
  9.  
  10. echo %Lang1%

saludos
« Última modificación: 25 Mayo 2012, 08:40 am por EleKtro H@cker » En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Batch multi-idiomas
« Respuesta #8 en: 25 Mayo 2012, 15:24 pm »

Eh, así me ahorro muchos txt inservibles... una cosita. Y si quiero borrar la configuracion es decir, (esto lo voy a utilizar para otras cosas), como borro el idioma seteado que esta guardado.

Y otra cosita, tengo un archivo de configuracion de color, y siempre a los usuarios le pregunto, te gustan los cambios? en poner "Te gustan los cambios (S/N)", no hay problema, pero en ingles, el (S/N), se convierte en (Y/N), de Yes y No. En el if, lo tengo puesto así. If "%tal%"=="s" goto:TAL, como lo puedo adaptar esa s, a una y, del ingles??
En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Batch multi-idiomas
« Respuesta #9 en: 25 Mayo 2012, 15:40 pm »

Eh, así me ahorro muchos txt inservibles... una cosita. Y si quiero borrar la configuracion es decir, (esto lo voy a utilizar para otras cosas), como borro el idioma seteado que esta guardado.

Código
  1. :: Esto copia el bat a otro archivo, Sin la linea que contiene la configuración.
  2. :: El bat original se elimina, Haz una copia antes de usar.
  3. Type %0 | FINDSTR /V "^SaveLang=...$" > "%~n0_New.bat" && Del /Q %0 && CMD /C "%~n0_New.bat"

Y otra cosita, tengo un archivo de configuracion de color, y siempre a los usuarios le pregunto, te gustan los cambios? en poner "Te gustan los cambios (S/N)", no hay problema, pero en ingles, el (S/N), se convierte en (Y/N), de Yes y No. En el if, lo tengo puesto así. If "%tal%"=="s" goto:TAL, como lo puedo adaptar esa s, a una y, del ingles??
Código
  1. choice /C SN /M "Te gustan los cambios?"
  2. If %Errorlevel% EQU 1 (Echo elegiste S & Pause)
  3. If %Errorlevel% EQU 2 (Echo Elegiste N & Pause)

EDITO: O...
Código
  1. @Echo OFF
  2.  
  3. Set VAR=Y
  4.  
  5. Echo %VAR%| FINDSTR /I "^s$ ^si$ ^y$ ^yes$" >NUL
  6. If %Errorlevel% EQU 0 (goto :TAL)
  7.  
  8. :TAL
« Última modificación: 25 Mayo 2012, 15:48 pm por EleKtro H@cker » En línea



Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Batch Multi Instalador « 1 2 3 4 »
Scripting
ociruam 30 21,855 Último mensaje 11 Noviembre 2010, 00:22 am
por ociruam
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines