diff options
Diffstat (limited to 'debian/patches/install-locale-langpack.patch')
-rw-r--r-- | debian/patches/install-locale-langpack.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/debian/patches/install-locale-langpack.patch b/debian/patches/install-locale-langpack.patch new file mode 100644 index 0000000..ae96bab --- /dev/null +++ b/debian/patches/install-locale-langpack.patch @@ -0,0 +1,116 @@ +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 |