Commit 03ca727b authored by Colin Watson's avatar Colin Watson Committed by Colin Watson

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
parent c8164bdd
......@@ -595,17 +595,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;
}
......@@ -622,14 +630,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");
}
......@@ -638,6 +646,7 @@ copy_locales (const char *dstd)
free (dstf);
}
grub_util_fd_closedir (d);
free (dir);
}
static struct
......@@ -793,12 +802,14 @@ grub_install_copy_files (const char *src,
{
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
{
const char *locale_dir = get_localedir ();
char *locale_langpack_dir = xasprintf ("%s-langpack", locale_dir);
for (i = 0; i < install_locales.n_entries; i++)
{
......@@ -816,6 +827,19 @@ grub_install_copy_files (const char *src,
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],
......@@ -831,6 +855,8 @@ grub_install_copy_files (const char *src,
grub_util_error (_("cannot find locale `%s'"),
install_locales.entries[i]);
}
free (locale_langpack_dir);
}
if (install_themes.is_default)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment