Linux/Unix Shell Scripting - Como hacer que una script de shell script pueda ejecutarse con varios idomas

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 3 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Como hacer que una script de shell script pueda ejecutarse con varios idomas

Publicado por Jorge (4 intervenciones) el 03/08/2018 07:23:52
Hola me explico lo que quiero hacer, quiero hacer una script que te muestre el menú en que idioma lo quieres [Eso ya lo tengo)-

Me explico quiero hacer un archivo ´SCRIPT.sh´ que cuando muestre un mensaje ejemplo (Hola Juan), este texto que muestra esta dentro de un archivo ´idiomaES.txt´ en el hay una variable saludo=$(Hola Juan), entonces lo que quiero en que me ayuden es como poner en el archivo SCRIPT.sh la variable correcta para que leea el texto de esa linea de saludo y pueda mostrarlo

Estaba intentando poner esto
-Archivo SCRIPT.sh
saludo=$(cat IdiomaES.txt)
.

Pero esto me mostraria todo el contenido de ese archivo, y no quiero eso, ya que el archivo tendrá varias variable que muestren texto ejemplo:
saludo=$(Hola Juan)
mensaje1=$(qweqwuan)
mensaje2=$(wqeeqwe)
mensaje3=$(Hqwean)
mensaje4=$(Hqweqn)
..

espero me pueda ayudar :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como hacer que una script de shell script pueda ejecutarse con varios idomas

Publicado por Tom (331 intervenciones) el 03/08/2018 10:34:18
Lo que intentas hacer está bastante mal.
¿ Qué crees que significa "$(Hola Juan)" ?

Cuando tengas arreglado tu archivo puedes hacer algo como esto:

1
2
3
4
5
6
7
case $LANG in
"es_ES*") source IdiomaES.txt;;
"en_US*") source IdiomaEN.txt;;
*) source IdiomaDefault.txt;;
esac
 
echo $saludo

También puedes echar un ojo a esto:
http://tldp.org/LDP/abs/html/localization.html
pero no parece fácil de entender ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Raúl
Val: 15
Ha disminuido 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Como hacer que una script de shell script pueda ejecutarse con varios idomas

Publicado por Raúl (5 intervenciones) el 03/08/2018 19:29:42
Puedes convertir tu saludo=$(cat IdiomaES.txt) en un array sólo agregando un paréntesis antes, es decir saludo=($(cat IdiomaES.txt)), lo que crearía un elemento por cada espacio en el resultado del cat, y por cada salto de linea***, aunque esto realmente no te daría tu saludo, según tu ejemplo podría ser algo como:

1
2
espaniol=($(cat IdiomaES.txt))
saludo=${espaniol[0]}

Mucha suerte con eso e implementa algo como lo que sugiere Tom :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Raúl
Val: 15
Ha disminuido 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Como hacer que una script de shell script pueda ejecutarse con varios idomas

Publicado por Raúl (5 intervenciones) el 03/08/2018 19:55:28
PD Tendrías que escribir todos tus mensajes sin espacio, y hacer una función que imprima los mensajes, algo como

Contenido de IdiomaEs.txt
1
2
Hola.Juan
No.toques.ahí

Y para poder imprimirlo de buena forma tendrías que usar un if y esto

1
saludo=($(echo $saludo | tr "." "\n"))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 9 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Como hacer que una script de shell script pueda ejecutarse con varios idomas

Publicado por Santi (5 intervenciones) el 08/10/2018 17:06:59
Saludos,
Yo lo haría de la siguiente manera:

Crearía un archivo Textos.txt :
-------------------------------------------------------------
ENG:Saludo:hello
ESP:Saludo:hola
ENG:Despedida:bye
ESP:Despedida:Adios
.
.
.
Etc

Y lo llamaría desde el shell de esta manera:
Definiría Idioma de cualquier manera e imprimiría su texto
Sería ampliable, amigable, poco ortodoxo pero elegante.
-------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
#
Idioma="ENG"
 
function texto(){
	Resultado=$( grep "$Idioma:$1" Textos.txt | awk -F':' '{print $3}' )
	echo "$Resultado"
}
 
texto "Saludo"
texto "Despedida"

La salida:
-------------------------------------------------------------
hello
bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar