[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#268815: Second stage in debian-installer starts up in english when swithcing languages during first stage



* Christian Perrier [2004-08-30 08:23:46+0200]
> Quoting Recai Oktas (roktas@omu.edu.tr):
> > * Håvard Korsvoll [2004-08-29 12:19:41+0200]
> > > I have tried a installation in norwegian bokmaal on a i386 system. 
> > > Started installation in export mode and looked around in different 
> > > menus  to check translation. I changed the language back and forth 
> > > (nynorsk, english, bokmaal). Finally settled for bokmaal. Finished the 
> > > first stage and rebooted.
> > > When booting in to the installed system I get english as language.
> > > 
> > > When doing an install and choosing language one time only, it gets 
> > > right, I get norwegian bokmaal as language
> > 
> > Hmm, this is probably the same bug as #265085?  If so, we should merge 
> > them.
> 
> You're certainly right.
> 
> Recai, can you have a look at these bugs. They are quite nasty and,
> I'm afraid, unanticipated consequences of the
> languagechooser/countrychooser interaction.
> 
> The best is probably by forcing countrychooser again after a
> languagechooser run. However, I don't know how this could be
> achieved....hence putting Joey in CC.....

I have prepared a patch set for {contry,language}chooser explained as
follows:

+ countrychooser:
    * debian/postinst:
      - Move the core code to a separate executable as 'countrychooser'.
      - Make it a wrapper to /usr/bin/countrychooser.
    * debian/rules: Install countrychooser to /usr/bin.
    * debian/dirs: New file.
    * countrychooser: New file.  The functionality in postinst can be 
      reached easily.

+ languagechooser:
    * Add a workaround to support language reselections.
      (Closes: #265085, #268815)

I've tested them here and seems fine to me.  Christian, could you also
give it a try?  As I stated in the code (FIXME comment) I couldn't
manage to find a better solution, maybe Joey suggests a more legal
solution for the problem.

One final note: Since the user changes the language, could it be
reasonable to ask him/her for keyboard also?  If you think so, here is
the code portion which I've got successful results, (but I don't like
the idea):

     	db_set debconf/priority critical
     	countrychooser
    +	
    +	# While on it, the user may also want to change keymap.
    +	db_reset console-tools/arch
    +	db_set debconf/priority high
    +	kbd-chooser
     
     	db_set debconf/priority $save_priority
         ) || true

Regards,

-- 
roktas
diff -ruN countrychooser.orig/countrychooser countrychooser/countrychooser
--- countrychooser.orig/countrychooser	1970-01-01 02:00:00.000000000 +0200
+++ countrychooser/countrychooser	2004-08-17 23:49:49.000000000 +0300
@@ -0,0 +1,286 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_capb backup
+
+INDENT="  "
+
+localecode="debian-installer/locale"
+fallbacklocalecode="debian-installer/fallbacklocale"
+languagechooserlocalecode="languagechooser/locale"
+languagecode="debian-installer/language"
+countrycode="debian-installer/country"
+languagechooserlanguage="languagechooser/language-name"
+shortlist="countrychooser/country-name-shortlist"
+fulllist="countrychooser/country-name"
+
+# This is the iso_3166.tab file location
+ISO3166TAB=/usr/share/iso-codes/iso_3166.tab
+SUPPORTEDLOCALES=/etc/SUPPORTED-short
+SHORTLISTS=/etc/shortlists
+
+for list in $ISO3166TAB ; do 
+	if [ -f "$list" ]; then
+		countries="$list"
+	fi
+done
+
+error() {
+	logger -t countrychooser "error: $@"
+	exit 1
+}
+
+log() {
+	logger -t countrychooser "info: $@"
+}
+
+code2country() {
+	COUNTRYCODE="$1"
+	line=`grep "$COUNTRYCODE" $countries`
+
+	if [ -n "$line" ]; then
+		# Remember that country names may have spaces so the code
+		# is different than in country2code.
+		printf "$INDENT"
+		echo $line | cut -b 4-
+	else
+		error "Unable to locate info on country '$COUNTRYCODE'"
+	fi
+}
+
+country2code() {
+	COUNTRYNAME=$(echo "$1" | sed "s/^$INDENT//" | sed 's/\\,/,/g')
+	line=`grep "$COUNTRYNAME$" $countries`
+
+	if [ -n "$line" ]; then
+		set $line
+		if [ -n "$1" ]; then
+			echo "$1"
+		fi
+	fi
+}
+
+cat_shortlist() {
+	(out=""
+	IFS='
+'
+	while read line; do
+		if $(echo "$line" | grep -q "^:$1\$"); then
+			out=1
+		elif $(echo "$line" | grep -q "^:"); then
+			out=""
+		elif [ "$out" ]; then
+			echo "$line"
+		fi
+	done
+	) < $SHORTLISTS
+}
+
+loccountry2code() {
+	COUNTRYNAME=$(echo "$1" | sed "s/^$INDENT//" | sed 's/\\,/,/g')
+	line=`cat_shortlist $2| grep "$COUNTRYNAME\$"`
+	if [ -n "$line" ]; then
+		set $line
+		if [ -n "$1" ]; then
+			echo "$1"
+		fi
+	fi
+}
+
+# First grab back the country we got from languagechooser
+# (or from elsewhere) and populate the debconf database with
+# it so that it becomes the default choice
+db_get "$countrycode"
+if [ -n "$RET" ]; then
+	# Remember which code was first used
+	# This is needed at the end of the script
+	COUNTRYCODE_LANGUAGECHOOSER="$RET"
+	COUNTRY_LANGUAGECHOOSER="$(code2country "$RET")"
+	db_set "$fulllist" "${COUNTRY_LANGUAGECHOOSER}"
+	db_set "$shortlist" "${COUNTRY_LANGUAGECHOOSER}"
+fi
+
+
+# Then grab back the language we got from languagechooser
+db_get "$languagechooserlanguage"
+if [ -n "$RET" ]; then
+	LANGNAME="$RET"
+	# languagemap is a script from languagechooser which
+	# returns the language list in LANGUAGELIST and the
+	# language alone in LANGUAGE
+	if ! . languagemap ; then
+		LANGUAGE=C
+        else
+		# We need to remember these for further use
+	        LOCALE_LANGUAGECHOOSER=$LOCALE
+		LANGUAGECODE_LANGUAGECHOOSER=$LANGUAGE
+	fi
+fi
+
+# Then grab back the locale we got from languagechooser
+db_get "$localecode"
+if [ -n "$RET" ]; then
+	DEFAULTLOCALE="$RET"
+else
+	# Just in case
+	DEFAULTLOCALE="C"
+fi
+# If present, keep track of charset or modifier we got from languagechooser
+# This charset or modifier is in the fallback locale
+EXTRA_LANGUAGECHOOSER=`echo $FALLBACKLOCALE | sed -e 's/^[^.@]*//'`
+
+FIRST_LANG=$(echo $LANGUAGELIST | sed -e 's/:.*$//')
+
+if grep -q "^:$FIRST_LANG\$" $SHORTLISTS; then
+  use_lang=$FIRST_LANG
+elif grep -q "^:$LANGUAGE\$" $SHORTLISTS; then
+  use_lang=$LANGUAGE
+else
+  use_lang=""
+fi
+
+# At this step we should have either xx, or xx_YY in LANGNAME
+if [ "$LANGUAGE" != "C" ]; then
+	STATE=1
+	LASTSTATE=3
+	fullprio=critical
+	while [ "$STATE" != 0 -a "$STATE" -le "$LASTSTATE" ]; do
+		case "$STATE" in
+		1)
+			# If the locale includes a country, then
+			# don't display the short list, and only show the
+			# full list at medium priority.
+			if (echo $DEFAULTLOCALE | grep "_" >/dev/null 2>&1) ; then
+				askedshort=0
+				fullprio=medium
+			else
+				if [ "$use_lang" ]; then
+					# Build a short list of supported locales for
+					# the language.
+					OLD_IFS="$IFS"
+					IFS='
+'
+					COUNTRIES=$(cat_shortlist $use_lang | sed -e 's/^.*	//');
+					SHORTLIST=""
+					for name in $COUNTRIES; do
+						if [ ! -z "${SHORTLIST}" ]; then
+							SHORTLIST="${SHORTLIST}, "
+						fi
+						countryname=$(echo "${INDENT}${name}" | sed -e 's/,/\\,/')
+						SHORTLIST="${SHORTLIST}${countryname}"
+					done
+					IFS="$OLD_IFS"	
+					db_subst $shortlist SHORTLIST "${SHORTLIST}"
+					db_subst $shortlist DEFAULTLOCALE "${DEFAULTLOCALE}"
+					db_input critical $shortlist || [ $? -eq 30 ]
+					askedshort=1
+				else
+					askedshort=0
+				fi
+			fi
+		;;
+		2)
+			db_get $shortlist
+			if [ "$askedshort" = 1 ] && [ "$RET" != "other" ]; then
+     				COUNTRYCODE="$(loccountry2code "$RET" $use_lang )" || true
+				if [ -n "$COUNTRYCODE" ]; then
+					break
+				fi
+			fi
+			
+			db_subst $fulllist DEFAULTLOCALE "${DEFAULTLOCALE}"
+			db_input $fullprio $fulllist || [ $? -eq 30 ]
+		;;
+		3)
+			db_get $fulllist
+			COUNTRYCODE="$(country2code "$RET")" || true
+			if [ -n "$COUNTRYCODE" ]; then
+				break
+			else
+				# User probably selected a region.
+				STATE=2
+				continue
+			fi
+		;;
+		esac
+
+		if db_go; then
+			STATE=$(($STATE + 1))
+		else
+			STATE=$(($STATE - 1))
+		fi
+	done
+
+	if [ "$STATE" = 0 ]; then
+		exit 10 # back out to main menu
+	fi
+fi
+
+db_set "$countrycode"  "$COUNTRYCODE"
+log "$countrycode = '$COUNTRYCODE'"
+
+# Search for a supported locale which most closely resembles.
+LOCALE=""
+log "LANGUAGE = '$LANGUAGE'"
+log "LANGUAGECODE_LANGUAGECHOOSER = '$LANGUAGECODE_LANGUAGECHOOSER'"
+log "COUNTRYCODE = '$COUNTRYCODE'"
+log "COUNTRYCODE_LANGUAGECHOOSER = '$COUNTRYCODE_LANGUAGECHOOSER'"
+log "LOCALE_LANGUAGECHOOSER = '$LOCALE_LANGUAGECHOOSER'"
+
+for entry in ${LANGUAGE}_${COUNTRYCODE}${EXTRA_LANGUAGECHOOSER} \
+	     ${LANGUAGE}_${COUNTRYCODE}; do
+	if grep -q "^${entry}$" $SUPPORTEDLOCALES; then
+		# Special handling of cases where the locale
+		# in languagechooser is NOT the combination of
+		# language_COUNTRY. Used for Norwegian Bokmal transition
+		# in order to keep no_NO as locale. May be used in the
+		# future for other special cases, so we'd better keep this
+	        if \
+		    [ "${LANGUAGE}" = "${LANGUAGECODE_LANGUAGECHOOSER}" \
+		      -a \
+		      "${COUNTRYCODE}" = "${COUNTRYCODE_LANGUAGECHOOSER}" \
+		      -a \
+		      "${LANGUAGE}_${COUNTRYCODE}" != "${LOCALE_LANGUAGECHOOSER}" \
+		    ] ;  then
+		    # In details : we revert back to the locale
+		    # defined in languagechooser if countrychooser
+		    # did NOT induce change in language and country
+		    # but the resulting locale is different from the
+		    # one we had in languagechooser
+		    LOCALE=${LOCALE_LANGUAGECHOOSER}
+		else
+		    LOCALE="${entry}"
+		fi
+		break
+	fi
+done
+
+# Fall back to a supported locale.
+if [ -z "${LOCALE}" ]; then
+	LOCALE="${FALLBACKLOCALE}"
+	log "falling back to locale '${FALLBACKLOCALE}'"
+fi
+
+# Set the locale.
+db_set "$localecode" "${LOCALE}"
+log "$localecode = '${LOCALE}'"
+
+# The code below tries to add lang_COUNTRY at the beginning of the language
+# list we got from languagechooser
+# Example:
+#   -user chooses "Arabic" at languagechooser-->she gets "ar_EG:ar:en_US:en"
+#    (see the languagelist file from languagechooser)
+#   -she chooses "Syria" as country-->then we end up with 
+#    "ar_SY:ar_EG:ar:en_UC:en"
+# We shouldn't just add this before the former list in case the country 
+# is changed several times.
+if [ "$COUNTRYCODE" != "$COUNTRYCODE_LANGUAGECHOOSER" -a -n "$COUNTRYCODE" -a -n $LANGUAGE ]; then
+	LANGUAGELIST=${LANGUAGE}_${COUNTRYCODE}:${LANGUAGELIST}
+	# Languagelist setting
+	db_set "$languagecode" "$LANGUAGELIST"
+	log "$languagecode = '$LANGUAGELIST'"
+fi
+
+exit 0
diff -ruN countrychooser.orig/debian/dirs countrychooser/debian/dirs
--- countrychooser.orig/debian/dirs	1970-01-01 02:00:00.000000000 +0200
+++ countrychooser/debian/dirs	2004-09-01 14:14:29.000000000 +0300
@@ -0,0 +1 @@
+usr/bin
diff -ruN countrychooser.orig/debian/postinst countrychooser/debian/postinst
--- countrychooser.orig/debian/postinst	2004-08-17 23:49:49.000000000 +0300
+++ countrychooser/debian/postinst	2004-09-01 14:11:33.000000000 +0300
@@ -1,286 +1,5 @@
-#!/bin/sh
-set -e
+#!/bin/sh -e
 
-. /usr/share/debconf/confmodule
+PATH=$PATH:.
 
-db_capb backup
-
-INDENT="  "
-
-localecode="debian-installer/locale"
-fallbacklocalecode="debian-installer/fallbacklocale"
-languagechooserlocalecode="languagechooser/locale"
-languagecode="debian-installer/language"
-countrycode="debian-installer/country"
-languagechooserlanguage="languagechooser/language-name"
-shortlist="countrychooser/country-name-shortlist"
-fulllist="countrychooser/country-name"
-
-# This is the iso_3166.tab file location
-ISO3166TAB=/usr/share/iso-codes/iso_3166.tab
-SUPPORTEDLOCALES=/etc/SUPPORTED-short
-SHORTLISTS=/etc/shortlists
-
-for list in $ISO3166TAB ; do 
-	if [ -f "$list" ]; then
-		countries="$list"
-	fi
-done
-
-error() {
-	logger -t countrychooser "error: $@"
-	exit 1
-}
-
-log() {
-	logger -t countrychooser "info: $@"
-}
-
-code2country() {
-	COUNTRYCODE="$1"
-	line=`grep "$COUNTRYCODE" $countries`
-
-	if [ -n "$line" ]; then
-		# Remember that country names may have spaces so the code
-		# is different than in country2code.
-		printf "$INDENT"
-		echo $line | cut -b 4-
-	else
-		error "Unable to locate info on country '$COUNTRYCODE'"
-	fi
-}
-
-country2code() {
-	COUNTRYNAME=$(echo "$1" | sed "s/^$INDENT//" | sed 's/\\,/,/g')
-	line=`grep "$COUNTRYNAME$" $countries`
-
-	if [ -n "$line" ]; then
-		set $line
-		if [ -n "$1" ]; then
-			echo "$1"
-		fi
-	fi
-}
-
-cat_shortlist() {
-	(out=""
-	IFS='
-'
-	while read line; do
-		if $(echo "$line" | grep -q "^:$1\$"); then
-			out=1
-		elif $(echo "$line" | grep -q "^:"); then
-			out=""
-		elif [ "$out" ]; then
-			echo "$line"
-		fi
-	done
-	) < $SHORTLISTS
-}
-
-loccountry2code() {
-	COUNTRYNAME=$(echo "$1" | sed "s/^$INDENT//" | sed 's/\\,/,/g')
-	line=`cat_shortlist $2| grep "$COUNTRYNAME\$"`
-	if [ -n "$line" ]; then
-		set $line
-		if [ -n "$1" ]; then
-			echo "$1"
-		fi
-	fi
-}
-
-# First grab back the country we got from languagechooser
-# (or from elsewhere) and populate the debconf database with
-# it so that it becomes the default choice
-db_get "$countrycode"
-if [ -n "$RET" ]; then
-	# Remember which code was first used
-	# This is needed at the end of the script
-	COUNTRYCODE_LANGUAGECHOOSER="$RET"
-	COUNTRY_LANGUAGECHOOSER="$(code2country "$RET")"
-	db_set "$fulllist" "${COUNTRY_LANGUAGECHOOSER}"
-	db_set "$shortlist" "${COUNTRY_LANGUAGECHOOSER}"
-fi
-
-
-# Then grab back the language we got from languagechooser
-db_get "$languagechooserlanguage"
-if [ -n "$RET" ]; then
-	LANGNAME="$RET"
-	# languagemap is a script from languagechooser which
-	# returns the language list in LANGUAGELIST and the
-	# language alone in LANGUAGE
-	if ! . languagemap ; then
-		LANGUAGE=C
-        else
-		# We need to remember these for further use
-	        LOCALE_LANGUAGECHOOSER=$LOCALE
-		LANGUAGECODE_LANGUAGECHOOSER=$LANGUAGE
-	fi
-fi
-
-# Then grab back the locale we got from languagechooser
-db_get "$localecode"
-if [ -n "$RET" ]; then
-	DEFAULTLOCALE="$RET"
-else
-	# Just in case
-	DEFAULTLOCALE="C"
-fi
-# If present, keep track of charset or modifier we got from languagechooser
-# This charset or modifier is in the fallback locale
-EXTRA_LANGUAGECHOOSER=`echo $FALLBACKLOCALE | sed -e 's/^[^.@]*//'`
-
-FIRST_LANG=$(echo $LANGUAGELIST | sed -e 's/:.*$//')
-
-if grep -q "^:$FIRST_LANG\$" $SHORTLISTS; then
-  use_lang=$FIRST_LANG
-elif grep -q "^:$LANGUAGE\$" $SHORTLISTS; then
-  use_lang=$LANGUAGE
-else
-  use_lang=""
-fi
-
-# At this step we should have either xx, or xx_YY in LANGNAME
-if [ "$LANGUAGE" != "C" ]; then
-	STATE=1
-	LASTSTATE=3
-	fullprio=critical
-	while [ "$STATE" != 0 -a "$STATE" -le "$LASTSTATE" ]; do
-		case "$STATE" in
-		1)
-			# If the locale includes a country, then
-			# don't display the short list, and only show the
-			# full list at medium priority.
-			if (echo $DEFAULTLOCALE | grep "_" >/dev/null 2>&1) ; then
-				askedshort=0
-				fullprio=medium
-			else
-				if [ "$use_lang" ]; then
-					# Build a short list of supported locales for
-					# the language.
-					OLD_IFS="$IFS"
-					IFS='
-'
-					COUNTRIES=$(cat_shortlist $use_lang | sed -e 's/^.*	//');
-					SHORTLIST=""
-					for name in $COUNTRIES; do
-						if [ ! -z "${SHORTLIST}" ]; then
-							SHORTLIST="${SHORTLIST}, "
-						fi
-						countryname=$(echo "${INDENT}${name}" | sed -e 's/,/\\,/')
-						SHORTLIST="${SHORTLIST}${countryname}"
-					done
-					IFS="$OLD_IFS"	
-					db_subst $shortlist SHORTLIST "${SHORTLIST}"
-					db_subst $shortlist DEFAULTLOCALE "${DEFAULTLOCALE}"
-					db_input critical $shortlist || [ $? -eq 30 ]
-					askedshort=1
-				else
-					askedshort=0
-				fi
-			fi
-		;;
-		2)
-			db_get $shortlist
-			if [ "$askedshort" = 1 ] && [ "$RET" != "other" ]; then
-     				COUNTRYCODE="$(loccountry2code "$RET" $use_lang )" || true
-				if [ -n "$COUNTRYCODE" ]; then
-					break
-				fi
-			fi
-			
-			db_subst $fulllist DEFAULTLOCALE "${DEFAULTLOCALE}"
-			db_input $fullprio $fulllist || [ $? -eq 30 ]
-		;;
-		3)
-			db_get $fulllist
-			COUNTRYCODE="$(country2code "$RET")" || true
-			if [ -n "$COUNTRYCODE" ]; then
-				break
-			else
-				# User probably selected a region.
-				STATE=2
-				continue
-			fi
-		;;
-		esac
-
-		if db_go; then
-			STATE=$(($STATE + 1))
-		else
-			STATE=$(($STATE - 1))
-		fi
-	done
-
-	if [ "$STATE" = 0 ]; then
-		exit 10 # back out to main menu
-	fi
-fi
-
-db_set "$countrycode"  "$COUNTRYCODE"
-log "$countrycode = '$COUNTRYCODE'"
-
-# Search for a supported locale which most closely resembles.
-LOCALE=""
-log "LANGUAGE = '$LANGUAGE'"
-log "LANGUAGECODE_LANGUAGECHOOSER = '$LANGUAGECODE_LANGUAGECHOOSER'"
-log "COUNTRYCODE = '$COUNTRYCODE'"
-log "COUNTRYCODE_LANGUAGECHOOSER = '$COUNTRYCODE_LANGUAGECHOOSER'"
-log "LOCALE_LANGUAGECHOOSER = '$LOCALE_LANGUAGECHOOSER'"
-
-for entry in ${LANGUAGE}_${COUNTRYCODE}${EXTRA_LANGUAGECHOOSER} \
-	     ${LANGUAGE}_${COUNTRYCODE}; do
-	if grep -q "^${entry}$" $SUPPORTEDLOCALES; then
-		# Special handling of cases where the locale
-		# in languagechooser is NOT the combination of
-		# language_COUNTRY. Used for Norwegian Bokmal transition
-		# in order to keep no_NO as locale. May be used in the
-		# future for other special cases, so we'd better keep this
-	        if \
-		    [ "${LANGUAGE}" = "${LANGUAGECODE_LANGUAGECHOOSER}" \
-		      -a \
-		      "${COUNTRYCODE}" = "${COUNTRYCODE_LANGUAGECHOOSER}" \
-		      -a \
-		      "${LANGUAGE}_${COUNTRYCODE}" != "${LOCALE_LANGUAGECHOOSER}" \
-		    ] ;  then
-		    # In details : we revert back to the locale
-		    # defined in languagechooser if countrychooser
-		    # did NOT induce change in language and country
-		    # but the resulting locale is different from the
-		    # one we had in languagechooser
-		    LOCALE=${LOCALE_LANGUAGECHOOSER}
-		else
-		    LOCALE="${entry}"
-		fi
-		break
-	fi
-done
-
-# Fall back to a supported locale.
-if [ -z "${LOCALE}" ]; then
-	LOCALE="${FALLBACKLOCALE}"
-	log "falling back to locale '${FALLBACKLOCALE}'"
-fi
-
-# Set the locale.
-db_set "$localecode" "${LOCALE}"
-log "$localecode = '${LOCALE}'"
-
-# The code below tries to add lang_COUNTRY at the beginning of the language
-# list we got from languagechooser
-# Example:
-#   -user chooses "Arabic" at languagechooser-->she gets "ar_EG:ar:en_US:en"
-#    (see the languagelist file from languagechooser)
-#   -she chooses "Syria" as country-->then we end up with 
-#    "ar_SY:ar_EG:ar:en_UC:en"
-# We shouldn't just add this before the former list in case the country 
-# is changed several times.
-if [ "$COUNTRYCODE" != "$COUNTRYCODE_LANGUAGECHOOSER" -a -n "$COUNTRYCODE" -a -n $LANGUAGE ]; then
-	LANGUAGELIST=${LANGUAGE}_${COUNTRYCODE}:${LANGUAGELIST}
-	# Languagelist setting
-	db_set "$languagecode" "$LANGUAGELIST"
-	log "$languagecode = '$LANGUAGELIST'"
-fi
-
-exit 0
+countrychooser
diff -ruN countrychooser.orig/debian/rules countrychooser/debian/rules
--- countrychooser.orig/debian/rules	2004-05-08 02:58:31.000000000 +0300
+++ countrychooser/debian/rules	2004-09-01 14:10:08.000000000 +0300
@@ -34,6 +34,7 @@
 	dh_testroot
 	dh_clean -k
 	dh_installdirs etc
+	dh_install countrychooser usr/bin
 	# The following while we have no other way to get SUPPORTED
 	# Should become useless when we will have it
 	install -m644 debian/SUPPORTED-short debian/$(PACKAGE)/etc/SUPPORTED-short
diff -ruN languagechooser.orig/languagechooser languagechooser/languagechooser
--- languagechooser.orig/languagechooser	2004-07-25 00:47:11.000000000 +0300
+++ languagechooser/languagechooser	2004-09-01 16:59:07.000000000 +0300
@@ -15,6 +15,12 @@
     logger -t languagechooser "info: $@"
 }
 
+# Any other sane way to detect if this is the first run?
+db_get "$languagechooserlocalecode"
+if [ -z "$RET" ]; then
+    is_firsttime="yes"
+fi
+
 # debconf/language is an alias for debian-installer/language
 db_register "$languagecode" "debconf/language"
 
@@ -94,6 +100,22 @@
         ;;
 esac
 
+# FIXME: If the user changes his/her mind for the language later, we 
+# should call countrychooser to resolve the languagecode, so that the 
+# selected language can be used in the second stage installation.  
+# This is just a workaround until we find a better solution.
+if [ ! "$is_firsttime" ]; then
+    (
+	db_get debconf/priority
+	save_priority="$RET"
+	
+	db_set debconf/priority critical
+	countrychooser
+
+	db_set debconf/priority $save_priority
+    ) || true
+fi
+
 log "$localecode   = '$LOCALE'"
 log "$fallbacklocalecode   = '$FALLBACKLOCALE'"
 log "$languagechooserlocalecode   = '$LOCALE'"

Attachment: signature.asc
Description: Digital signature


Reply to: