Add this translation in the windows template file because the script must have the language is being set using https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Locale-Names.html While, for Windows, the standard being used is: https://www.ietf.org/rfc/rfc4646.txt (page 56, Language-Region topic). A practical example is: Windows will use, for Brazilian Portuguese, pt-BR instead of pt_BR. --- data/install-scripts/windows-unattend.xml | 50 ++++++++++++++++++++++++++----- osinfo/osinfo_install_config.c | 14 ++++++++- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/data/install-scripts/windows-unattend.xml b/data/install-scripts/windows-unattend.xml index d3b2df5..86031ed 100644 --- a/data/install-scripts/windows-unattend.xml +++ b/data/install-scripts/windows-unattend.xml @@ -32,6 +32,23 @@ </xsl:choose> </xsl:template> + <xsl:template name="language"> + <xsl:variable name="l10n-language"> + <xsl:value-of select="config/l10n-language"/> + </xsl:variable> + <xsl:variable name="new-l10n-language"> + <xsl:value-of select="translate($l10n-language,'_','-')"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="contains($new-l10n-language,'.')"> + <xsl:value-of select="substring-before($new-l10n-language,'.')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$new-l10n-language"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template name="arch"> <xsl:choose> <xsl:when test="count(config/hardware-arch) > 0"> @@ -99,11 +116,11 @@ <xsl:call-template name="arch"/> </xsl:attribute> <SetupUILanguage> - <UILanguage><xsl:value-of select="config/l10n-language"/></UILanguage> + <UILanguage><xsl:call-template name="language"/></UILanguage> </SetupUILanguage> - <SystemLocale><xsl:value-of select="config/l10n-language"/></SystemLocale> - <UILanguage><xsl:value-of select="config/l10n-language"/></UILanguage> - <UserLocale><xsl:value-of select="config/l10n-language"/></UserLocale> + <SystemLocale><xsl:call-template name="language"/></SystemLocale> + <UILanguage><xsl:call-template name="language"/></UILanguage> + <UserLocale><xsl:call-template name="language"/></UserLocale> </component> </settings> <settings pass="oobeSystem"> @@ -213,6 +230,23 @@ </xsl:choose> </xsl:template> + <xsl:template name="language"> + <xsl:variable name="l10n-language"> + <xsl:value-of select="config/l10n-language"/> + </xsl:variable> + <xsl:variable name="new-l10n-language"> + <xsl:value-of select="translate($l10n-language,'_','-')"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="contains($new-l10n-language,'.')"> + <xsl:value-of select="substring-before($new-l10n-language,'.')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$new-l10n-language"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template name="arch"> <xsl:choose> <xsl:when test="config/hardware-arch = 'x86_64'"> @@ -283,11 +317,11 @@ <xsl:call-template name="arch"/> </xsl:attribute> <SetupUILanguage> - <UILanguage><xsl:value-of select="config/l10n-language"/></UILanguage> + <UILanguage><xsl:call-template name="language"/></UILanguage> </SetupUILanguage> - <SystemLocale><xsl:value-of select="config/l10n-language"/></SystemLocale> - <UILanguage><xsl:value-of select="config/l10n-language"/></UILanguage> - <UserLocale><xsl:value-of select="config/l10n-language"/></UserLocale> + <SystemLocale><xsl:call-template name="language"/></SystemLocale> + <UILanguage><xsl:call-template name="language"/></UILanguage> + <UserLocale><xsl:call-template name="language"/></UserLocale> </component> </settings> <xsl:if test="os/version > 6.0"> diff --git a/osinfo/osinfo_install_config.c b/osinfo/osinfo_install_config.c index f146aec..a8a78e0 100644 --- a/osinfo/osinfo_install_config.c +++ b/osinfo/osinfo_install_config.c @@ -140,7 +140,19 @@ const gchar *osinfo_install_config_get_l10n_keyboard(OsinfoInstallConfig *config OSINFO_INSTALL_CONFIG_PROP_L10N_KEYBOARD); } - +/** + * osinfo_install_config_set_l10n_language: + * + * Sets the #OSINFO_INSTALL_CONFIG_PROP_L10N_LANGUAGE parameter. + * + * The expected format to set l10n_language follows the gettext Locale Names[0] + * standard with both encoding and variant are accepted but are optional. + * + * For example, 'pt_BR' is used to Brazilian Portuguese. 'pt_BR.utf8' is + * accepted but the encoding part is optional. + * + * [0]: https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Locale-Names.html + */ void osinfo_install_config_set_l10n_language(OsinfoInstallConfig *config, const gchar *language) { -- 1.8.0