Hi Joe,
On 03/19/09 19:02, Joseph J VLcek wrote: > Thanks Jan. > > I was spacing out and had thought the set_lang script was part of OS > and not our code. to be honest, this is the first time I am glad that set_lang script resides in slim_source gate - feel free to take advantage of this :-) Jan > > Doh! > > > > jan damborsky wrote: >> Hi Joe, >> >> >> On 03/19/09 16:22, Joseph J VLcek wrote: >>> Setting the default "keyboard layout" and "desktop language" are >>> part of the fix for bug6431. >>> >>> http://defect.opensolaris.org/bz/show_bug.cgi?id=6431 >>> >>> Setting the default "keyboard layout" is trivial since "kbd -s" >>> accepts an argument. Setting the keyboard laytout to the default of >>> English can be accomplished with the following command: >>> >>> /usr/bin/kbd -s US-English >>> >>> Setting the default "desktop language" is not as trivial since the >>> set_lang command does not accept an argument and requires user >>> input. I have 2 possible solutions, both work. I wanted to know what >>> folks feel is the best solution. >>> >>> Solution 1: >>> Use the set_lang command and echo the selection number >>> associated with English. >>> e.g.: >>> echo 3 | set_lang >>> >>> The downside to this approach is if the menu presented by the >>> set_lang command changes and "3" is no longer associated with English. >>> >>> Solution 2: >>> Do what the set_lang command does: >>> create the directory /etc/sysconfig then echo the value for English >>> into file: /etc/sysconfig/language >>> >>> e.g.: >>> mkdir -p "/etc/sysconfig" >>> echo "RC_LANG=en_US.UTF.8" > /etc/sysconfig/language" >>> >>> This seems to me to be the safer of the 2 solutions. >>> >>> Thoughts? >> >> Looking at the set_lang script, it seems that it already contains >> necessary stuff to correctly determine value for default choice >> (English). >> Based on this, I am thinking about one more possibility - set_lang >> script >> might be enhanced to accept one parameter - if set to 'default', >> interactive section would be just skipped and default determined by >> set_lang would be set. It might look like (full script is attached, >> but not polished :-): >> >> $ diff -u cmd/slim-install/config/set_lang /tmp/set_lang >> --- cmd/slim-install/config/set_lang Tue Mar 17 15:38:33 2009 >> +++ /tmp/set_lang Thu Mar 19 18:48:58 2009 >> @@ -40,6 +40,8 @@ >> # external file contains fixedlist >> typeset -r fixedlistfile='/usr/share/gui-install/langs_localized' >> >> +[ ${#*} -eq 1 -a $1="default" ] && pickup_default_choice=true >> + >> # Read integer value. Don't alter the choice for invalid input. >> # Added for "compatibilty" to "/usr/bin/kbd -s". >> # Note: This is different from other curses/ncurses/GTK+/Motif >> behaviour. >> @@ -166,6 +168,8 @@ >> >> # Prompt user to select language and check for valid entry >> integer choice=${languages.default} >> + >> +if [ "$pickup_default_choice" == "" ] ; then >> while true ; do >> readintval choice $"To select desktop language, enter a number >> [default is ${languages.default}]: " || continue >> >> @@ -174,6 +178,7 @@ >> done >> >> printf "User selected: %s\n" "${languages.list[choice-1].name}" >> +fi >> >> mkdir -p "/etc/sysconfig" >> >> >> The call in live-fs-root would be for this case: >> >> ... >> /usr/sbin/set_lang default >> ... >> >> Cheers, >> Jan >> >
