[virt-tools-list] [libosinfo v4] install-scripts: Translate lang format when needed
Fabiano Fidêncio
fabiano at fidencio.org
Fri Nov 23 15:03:08 UTC 2012
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
More information about the virt-tools-list
mailing list