Autor
|
Tema: Batch multi-idiomas (Leído 9,266 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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
Mensajes: 9.885
|
Método 1: Spanish.ini1=Bienvenido a mi programa 2=Porfavor seleccione una opcion para continuar... 3=Codeado por Elektro H@cker 4=opcion English.ini1=Welcome to my program 2=Please choose an option to continue... 3=Coded by Elektro H@cker 4=option test.bat Echo What language you will to use? \ Que lenguaje quiere usar? | MORE Echo [1] English, [2] Spanish, [3] Catalan. | MORE Choice /C 123 /M "Choose a language" If %Errorlevel% EQU 1 (Set LANG=English ) If %Errorlevel% EQU 2 (Set LANG=Spanish ) For /F "Tokens=2 Delims==" %%a in ('Type " %LANG%.ini" ^| Find "1="' ) Do (set saludo= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %LANG%.ini" ^| Find "2="' ) Do (set Selecciona= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %LANG%.ini" ^| Find "3="' ) Do (set autor= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %LANG%.ini" ^| Find "4="' ) Do (set opcion_menu= %%a) :Menu Echo: %opcion_menu% 3 | MORE
Método 2: :Langs If /I " %lang%" EQU "English" ( Set saludo=Welcome to my program Set Selecciona=Please choose an option to continue... Set Autor=Coded by Elektro H @cker ) If /I " %lang%" EQU "Spanish" ( Title Test de menu de idiomas Set saludo=Bienvenido a mi programa Set Selecciona=Porfavor seleccione una opcion para continuar... Set Autor=Codeado por Elektro H @cker ) If /I " %lang%" EQU "Catalan" ( Title Test de menu d'idiomes Set saludo=Benvingut al meu programa Set Selecciona=Si us plau seleccioneu una opcio per continuar ... Set Autor=Codeaixat per Elektro H @cker ) :Program Echo What language you will to use? \ Que lenguaje quiere usar? \ Que llenguatge voleu utilitzar? | MORE Echo [1] English, [2] Spanish, [3] Catalan. | MORE Choice /C 123 /M "Choose a language" If %Errorlevel% EQU 1 (Set LANG=English ) If %Errorlevel% EQU 2 (Set LANG=Spanish ) If %Errorlevel% EQU 3 (Set LANG=Catalan ) :Menu Echo: %opcion_menu% 3 | MORE
Los dos codes dan el mismo resultado: Saludos!
|
|
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Wow! Gracias, me voy a tirar un siglo entero para adaptarlo a mi code pero bueno... XD Edito: Y si lo quiero hacer con if? que es como yo se... es decir... tengo: :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
Mensajes: 9.885
|
Edito: Y si lo quiero hacer con if? que es como yo se... es decir... tengo: 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... :Eng El código entero en ingles... :Spa 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
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Pues si lo quieres hacer así, Deberías duplicar el código dentro del propio bat... :Eng El código entero en ingles... :Spa 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: if " %lang%"=="0" echo esp > lang.txt if " %lang%"=="1" echo eng > lang.txt
Luego: for /f "tokens=*" %%x in (lang.txt ) do (%%x For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "1="' ) Do (set saludo= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "2="' ) Do (set Selecciona= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "3="' ) Do (set autor= %%a) 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
Mensajes: 9.885
|
if " %lang%"=="0" echo esp > lang.txt if " %lang%"=="1" echo eng > lang.txt for /f "tokens=*" %%x in (lang.txt ) do (%%x For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "1="' ) Do (set saludo= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "2="' ) Do (set Selecciona= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang1%.ini" ^| Find "3="' ) Do (set autor= %%a) 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: Echo Escribe "ESP" o "ENG" For /F "Tokens=2 Delims==" %%a in ('Type " %lang%.ini" ^| Find "1="' ) Do (set saludo= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang%.ini" ^| Find "2="' ) Do (set Selecciona= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang%.ini" ^| Find "3="' ) Do (set autor= %%a) For /F "Tokens=2 Delims==" %%a in ('Type " %lang%.ini" ^| Find "4="' ) Do (set opcion_menu= %%a)
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
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Es para guardar la configuración.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Es para guardar la configuración.
ahmmm vale vale, pero entonces esto dejalo asi: 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) if " %lang%"=="0" (Echo+ & Echo SaveLang=esp )>>" %~0" if " %lang%"=="1" (Echo+ & Echo SaveLang=eng )>>" %~0" for /f "tokens=2 delims==" %%x in ('Find "SaveLang" " %~0" ^| Find /V " %~0"' ) do (set "lang1= %%x" )
saludos
|
|
« Última modificación: 25 Mayo 2012, 08:40 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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
Mensajes: 9.885
|
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. :: Esto copia el bat a otro archivo, Sin la linea que contiene la configuración. :: El bat original se elimina, Haz una copia antes de usar. 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??
choice /C SN /M "Te gustan los cambios?"
EDITO: O... Echo %VAR%| FINDSTR /I " ^s$ ^si$ ^y$ ^yes$" >NUL :TAL
|
|
« Última modificación: 25 Mayo 2012, 15:48 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
|