mirror of
https://git.proxmox.com/git/grub2
synced 2025-10-19 01:36:42 +00:00
117 lines
3.6 KiB
Diff
117 lines
3.6 KiB
Diff
From 31e9c5eaec14e18251db1fb7e6e44add22e56526 Mon Sep 17 00:00:00 2001
|
|
From: Colin Watson <cjwatson@ubuntu.com>
|
|
Date: Mon, 13 Jan 2014 12:13:07 +0000
|
|
Subject: Prefer translations from Ubuntu language packs if available
|
|
|
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/537998
|
|
Forwarded: not-needed
|
|
Last-Update: 2013-12-25
|
|
|
|
Patch-Name: install-locale-langpack.patch
|
|
---
|
|
util/grub-install-common.c | 37 ++++++++++++++++++++++++++++++-------
|
|
1 file changed, 30 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
|
|
index 4e212e690..e53730485 100644
|
|
--- a/util/grub-install-common.c
|
|
+++ b/util/grub-install-common.c
|
|
@@ -774,17 +774,25 @@ get_localedir (void)
|
|
}
|
|
|
|
static void
|
|
-copy_locales (const char *dstd)
|
|
+copy_locales (const char *dstd, int langpack)
|
|
{
|
|
grub_util_fd_dir_t d;
|
|
grub_util_fd_dirent_t de;
|
|
const char *locale_dir = get_localedir ();
|
|
+ char *dir;
|
|
|
|
- d = grub_util_fd_opendir (locale_dir);
|
|
+ if (langpack)
|
|
+ dir = xasprintf ("%s-langpack", locale_dir);
|
|
+ else
|
|
+ dir = xstrdup (locale_dir);
|
|
+
|
|
+ d = grub_util_fd_opendir (dir);
|
|
if (!d)
|
|
{
|
|
- grub_util_warn (_("cannot open directory `%s': %s"),
|
|
- locale_dir, grub_util_fd_strerror ());
|
|
+ if (!langpack)
|
|
+ grub_util_warn (_("cannot open directory `%s': %s"),
|
|
+ dir, grub_util_fd_strerror ());
|
|
+ free (dir);
|
|
return;
|
|
}
|
|
|
|
@@ -801,14 +809,14 @@ copy_locales (const char *dstd)
|
|
if (ext && (grub_strcmp (ext, ".mo") == 0
|
|
|| grub_strcmp (ext, ".gmo") == 0))
|
|
{
|
|
- srcf = grub_util_path_concat (2, locale_dir, de->d_name);
|
|
+ srcf = grub_util_path_concat (2, dir, de->d_name);
|
|
dstf = grub_util_path_concat (2, dstd, de->d_name);
|
|
ext = grub_strrchr (dstf, '.');
|
|
grub_strcpy (ext, ".mo");
|
|
}
|
|
else
|
|
{
|
|
- srcf = grub_util_path_concat_ext (4, locale_dir, de->d_name,
|
|
+ srcf = grub_util_path_concat_ext (4, dir, de->d_name,
|
|
"LC_MESSAGES", PACKAGE, ".mo");
|
|
dstf = grub_util_path_concat_ext (2, dstd, de->d_name, ".mo");
|
|
}
|
|
@@ -817,6 +825,7 @@ copy_locales (const char *dstd)
|
|
free (dstf);
|
|
}
|
|
grub_util_fd_closedir (d);
|
|
+ free (dir);
|
|
}
|
|
#endif
|
|
|
|
@@ -835,13 +844,15 @@ grub_install_copy_nls(const char *src __attribute__ ((unused)),
|
|
{
|
|
char *srcd = grub_util_path_concat (2, src, "po");
|
|
copy_by_ext (srcd, dst_locale, ".mo", 0);
|
|
- copy_locales (dst_locale);
|
|
+ copy_locales (dst_locale, 0);
|
|
+ copy_locales (dst_locale, 1);
|
|
free (srcd);
|
|
}
|
|
else
|
|
{
|
|
size_t i;
|
|
const char *locale_dir = get_localedir ();
|
|
+ char *locale_langpack_dir = xasprintf ("%s-langpack", locale_dir);
|
|
|
|
for (i = 0; i < install_locales.n_entries; i++)
|
|
{
|
|
@@ -858,6 +869,16 @@ grub_install_copy_nls(const char *src __attribute__ ((unused)),
|
|
continue;
|
|
}
|
|
free (srcf);
|
|
+ srcf = grub_util_path_concat_ext (4, locale_langpack_dir,
|
|
+ install_locales.entries[i],
|
|
+ "LC_MESSAGES", PACKAGE, ".mo");
|
|
+ if (grub_install_compress_file (srcf, dstf, 0))
|
|
+ {
|
|
+ free (srcf);
|
|
+ free (dstf);
|
|
+ continue;
|
|
+ }
|
|
+ free (srcf);
|
|
srcf = grub_util_path_concat_ext (4, locale_dir,
|
|
install_locales.entries[i],
|
|
"LC_MESSAGES", PACKAGE, ".mo");
|
|
@@ -867,6 +888,8 @@ grub_install_copy_nls(const char *src __attribute__ ((unused)),
|
|
free (srcf);
|
|
free (dstf);
|
|
}
|
|
+
|
|
+ free (locale_langpack_dir);
|
|
}
|
|
free (dst_locale);
|
|
#endif
|