summaryrefslogtreecommitdiffstats
path: root/bootloader
diff options
context:
space:
mode:
Diffstat (limited to 'bootloader')
-rw-r--r--bootloader/Makefile14
-rw-r--r--bootloader/lang-names.txt66
-rwxr-xr-xbootloader/make-grub-po180
-rwxr-xr-xbootloader/make-kbd-info115
-rwxr-xr-xbootloader/make-kbd-po81
-rw-r--r--bootloader/po/Makefile16
-rw-r--r--bootloader/po/bootloader.pot62
-rw-r--r--bootloader/po/de.po62
-rw-r--r--bootloader/po/fr.po62
9 files changed, 658 insertions, 0 deletions
diff --git a/bootloader/Makefile b/bootloader/Makefile
new file mode 100644
index 0000000..9994dae
--- /dev/null
+++ b/bootloader/Makefile
@@ -0,0 +1,14 @@
+all: kbd-names.txt lang-kbds.txt po
+
+kbd-names%txt lang-kbds%txt: layouts
+ make-kbd-info
+
+layouts:
+
+.PHONY: po
+po: make-grub-po make-kbd-po kbd-names.txt
+ make -C po
+
+clean:
+ rm -rf kbd-names.txt lang-kbds.txt layouts
+ make -C po clean
diff --git a/bootloader/lang-names.txt b/bootloader/lang-names.txt
new file mode 100644
index 0000000..57a70e5
--- /dev/null
+++ b/bootloader/lang-names.txt
@@ -0,0 +1,66 @@
+# The GNU Unifont font contains all the glyphs used in this file.use utf8;
+# \x{nnnn} represents the Unicode code point U+nnnn (where nnnn is four hex digits).
+use utf8;
+(
+"af_ZA" => "Afrikaans", # Afrikaans
+"ar_EG" => "\x{fef2}\x{fe91}\x{feae}\x{fecb}", # Arabic
+"bg_BG" => "Български", # Bulgarian
+"bn_BD" => "\x{09ac}\x{09be}\x{0982}\x{09b2}\x{09be}", # Bengali
+"bs_BA" => "Bosanski", # Bosnian
+"ca_ES" => "Català", # Catalan
+"cs_CZ" => "Čeština", # Czech
+"cy_GB" => "Cymraeg", # Welsh
+"da_DK" => "Dansk", # Danish
+"de_DE" => "Deutsch", # German
+"el_GR" => "Ελληνικά", # Greek
+"en_GB" => "English (UK)", # English
+"en_US" => "English (US)", # English
+"es_ES" => "Español", # Spanish
+"et_EE" => "Eesti", # Estonian
+"fa_IR" => "\x{fbfd}\x{feb4}\x{0631}\x{fe8e}\x{fed3}", # Farsi
+"fi_FI" => "Suomi", # Finnish
+"fr_FR" => "Français", # French
+"gl_ES" => "Galego", # Galician
+"ka_GE" => "ქართული", # Kartuli
+"gu_IN" => "\x{0a97}\x{0ac1}\x{0a9c}\x{0ab0}\x{0abe}\x{0aa4}\x{0ac0}", # Gujarati
+"he_IL" => "תירבע", # Hebrew
+"hi_IN" => "\x{0939}\x{093f}\x{0902}\x{0926}\x{0940}", # Hindi
+"hr_HR" => "Hrvatski", # Croatian
+"hu_HU" => "Magyar", # Hungarian
+"id_ID" => "Bahasa Indonesia", # Indonesian
+"it_IT" => "Italiano", # Italian
+"ja_JP" => "日本語", # Japanese
+"jv_ID" => "Basa Jawa", # Javanese
+"km_KH" => "Khmer", # Khmer
+"ko_KR" => "한글", # Korean
+"ky_KG" => "Кыргызча", # Kirghiz
+"lo_LA" => "\x{0e9e}\x{0eb2}\x{0eaa}\x{0eb2}\x{0ea5}\x{0eb2}\x{0ea7}", # Lao
+"lt_LT" => "Lietuvių", # Lithuanian
+"mk_MK" => "Македонски", # Macedonian
+"mr_IN" => "\x{092e}\x{0930}\x{093e}\x{0920}\x{0940}", # Marathi
+"nb_NO" => "Norsk (bokmål)", # Norwegian
+"nn_NO" => "Norsk (nynorsk)", # Norwegian
+"nl_NL" => "Nederlands", # Dutch
+"pa_IN" => "\x{0a2a}\x{0a70}\x{0a1c}\x{0a3e}\x{0a2c}\x{0a40}", # Punjabi
+"pl_PL" => "Polski", # Polish
+"pt_PT" => "Português", # Portuguese
+"pt_BR" => "Português (Brasil)", # Portuguese (Brazilian)
+"ro_RO" => "Română", # Romanian
+"ru_RU" => "Русский", # Russian
+"si_LK" => "\x{0dc3}\x{0dd2}\x{0d82}\x{0dc4}\x{0dbd}", # Sinhala
+"sk_SK" => "Slovenčina", # Slovak
+"sl_SI" => "Slovenščina", # Slovenian
+"sr_CS" => "Srpski", # Serbian
+"sv_SE" => "Svenska", # Swedish
+"ta_IN" => "\x{0ba4}\x{0bae}\x{0bbf}\x{0bb4}\x{0bcd}", # Tamil
+"tg_TJ" => "Тоҷикӣ", # Tajik
+"th_TH" => "\x{0e20}\x{0e32}\x{0e29}\x{0e32}\x{0e44}\x{0e17}\x{0e22}", # Thai
+"tr_TR" => "Türkçe", # Turkish
+"uk_UA" => "Українська", # Ukrainian
+"vi_VN" => "Tiếng Việt", # Vietnamese
+"wa_BE" => "Walon", # Walloon
+"xh_ZA" => "isiXhosa", # Xhosa
+"zh_CN" => "简体中文", # Simplified Chinese
+"zh_TW" => "繁體中文 (台灣)", # Traditional Chinese
+"zu_ZA" => "isiZulu", # Zulu
+)
diff --git a/bootloader/make-grub-po b/bootloader/make-grub-po
new file mode 100755
index 0000000..d85005b
--- /dev/null
+++ b/bootloader/make-grub-po
@@ -0,0 +1,180 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2017 Mageia
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# SYNOPSIS
+#
+# This program generates a PO file containing translations of the grub2
+# runtime messages into the language specified by the first command line
+# argument. grub2 must be installed on the build system, so that the
+# translations are available.
+#
+# The full set of translations is quite large, so we only generate
+# translations for the messages we expect to see in the ISO bootloader.
+#
+# The PO file (${LANGUAGE}-grub.po) is stored in the current working
+# directory.
+
+use lib qw(/usr/lib/libDrakX);
+
+use strict;
+
+use Cwd qw(abs_path getcwd);
+use MDK::Common;
+use common;
+
+# Get correct namespace (grub instead of libDrakX).
+BEGIN { unshift @::textdomains, 'grub' }
+
+# Set the translation language.
+@ARGV == 1 && $ARGV[0] or die "Usage: make-grub-po <language code>\n";
+$ENV{LANGUAGE} = $ARGV[0];
+
+# Define the list of strings we want to translate.
+my @msgids = (
+ "Press enter to boot the selected OS, `e' to edit the commands before booting " .
+ "or `c' for a command-line. ESC to return previous menu.",
+
+ "The highlighted entry will be executed automatically in %ds.",
+
+ "%ds remaining.",
+
+ "%ds",
+
+ "Minimal BASH-like line editing is supported. For the first word, TAB lists " .
+ "possible command completions. Anywhere else TAB lists possible device or " .
+ "file completions. %s",
+
+ "ESC at any time exits.",
+
+ "Press any key to continue...",
+
+ "Possible commands are:",
+
+ "Possible devices are:",
+
+ "Possible files are:",
+
+ "Possible partitions are:",
+
+ "Possible arguments are:",
+
+ "Possible things are:",
+
+ "can't find command `%s'",
+
+ "one argument expected",
+
+ "two arguments expected",
+
+ "three arguments expected",
+
+ "four arguments expected",
+
+ "missing arguments",
+
+ "unknown argument",
+
+ "missing `%c' symbol",
+
+ "filename expected",
+
+ "file or layout name required",
+
+ "file `%s' not found",
+
+ "no terminal specified",
+
+ "terminal `%s' isn't found",
+
+ "Active input terminals:",
+
+ "Available input terminals:",
+
+ "Active output terminals:",
+
+ "Available output terminals:",
+
+ "no server is specified",
+
+ "Device %s:",
+
+ "Partition %s:",
+
+ "No known filesystem detected",
+
+ "Filesystem cannot be accessed",
+
+ "Filesystem type %s",
+
+ "- Label `%s'",
+
+ "- Last modification time %d-%02d-%02d %02d:%02d:%02d %s",
+
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ "Sunday",
+
+ " - Sector size %uB",
+
+ " - Total size %llu%sKiB",
+
+ " - Total size unknown",
+
+ "Loaded fonts:",
+
+ "error: %s.\n",
+
+ ".5"
+);
+
+# Open the output file
+my $fn = getcwd() . '/' . $ARGV[0] . '-grub.po';
+open(my $fh, '>' . $fn) or die "couldn't open $fn";
+
+print $fh "# This file is automatically generated\n";
+print $fh "\n";
+
+foreach (@msgids) {
+ my ($msgid) = $_;
+
+ my $msgstr = translate($msgid);
+
+ # Blank the message string if there is no translation available.
+ $msgstr = '' if $msgstr eq $msgid;
+
+ # Any double quote characters need to be escaped when writing the
+ # PO file.
+ $msgid =~ s/"/\\"/g;
+ $msgstr =~ s/"/\\"/g;
+
+ # Any newline characters need to be escaped when writing the
+ # PO file.
+ $msgid =~ s/\R/\\n/g;
+ $msgstr =~ s/\R/\\n/g;
+
+ # Write the entry for this item.
+ print $fh "msgid \"$msgid\"\n";
+ print $fh "msgstr \"$msgstr\"\n";
+ print $fh "\n";
+}
+
+close($fh);
diff --git a/bootloader/make-kbd-info b/bootloader/make-kbd-info
new file mode 100755
index 0000000..d36fde8
--- /dev/null
+++ b/bootloader/make-kbd-info
@@ -0,0 +1,115 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2017 Mageia
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# SYNOPSIS
+#
+# This program gets the list of supported keyboards from libDrakX and
+# generates a grub2 keyboard mapping file for each keyboard in the list.
+# It then generates the keyboard names file and the language to keyboard
+# mapping file that are used when generating the bootloader menus for
+# the Mageia ISOs.
+#
+# The grub2 keyboard mapping files are generated using the grub2-kbdcomp
+# program. The X11 keyboard layout and variant names are obtained from
+# libDrakX. The files (*.gkb) are stored in the 'layouts' subdirectory
+# of the current working directory.
+#
+# The keyboard names file consists of a list of paired identifier and
+# description strings. The identifier is the keyboard identifier used
+# in libDrakX. The description is the canonical keyboard description
+# provided by libDrakX. The file (kbd-names.txt) is stored in the
+# current working directory.
+#
+# The language to keyboard mapping file consists of a map of language
+# identifier to keyboard identifier strings. The language identifier
+# is the standard language/country code used for specifying a locale
+# (e.g. en_US). The keyboard identifier is the default keyboard for
+# that language, as provided by libDrakX. The file (lang-kbds.txt) is
+# stored in the current working directory.
+#
+# The list of supported languages is read from the language names file
+# (lang-names.txt) that is used when generating the bootloader menus.
+# This file is expected to be found in the current working directory.
+
+use lib qw(/usr/lib/libDrakX);
+
+use strict;
+
+use Cwd qw(getcwd);
+use Data::Dumper;
+use MDK::Common;
+use common;
+use keyboard;
+use run_program;
+
+# Make sure we get the canonical description for the keyboard.
+$ENV{LANGUAGE} = 'C';
+
+# Make sure the 'layouts' subdirectory exists.
+my $kbd_dir = getcwd() . '/layouts';
+mkdir_p($kbd_dir);
+
+# Generate the grub2 keyboard mapping files and collect the keyboard
+# descriptions. For keyboards with multiple layouts, only use the first
+# layout. If we fail to generate a keyboard mapping, don't include that
+# keyboard in the lists.
+my %names;
+my @keyboards = map { { KEYBOARD => $_ } } keyboard::KEYBOARDs();
+foreach (@keyboards) {
+ my $id = $_->{KEYBOARD};
+ my $xkb = keyboard::keyboard2full_xkb($_);
+ my @model = split(',', $xkb->{XkbModel});
+ my @layout = split(',', $xkb->{XkbLayout});
+ my @variant = split(',', $xkb->{XkbVariant});
+ my $kbd_file = $kbd_dir . '/' . $id . '.gkb';
+ if (-e $kbd_file || run_program::run('grub2-kbdcomp', '-o', $kbd_file, '-model', $model[0], $layout[0], $variant[0])) {
+ $names{$id} = translate(keyboard::keyboard2text($_));
+ } else {
+ rm_rf($kbd_file);
+ }
+}
+
+# Generate the keyboard names file.
+my $filename = getcwd() . '/kbd-names.txt';
+open(my $f, '>' . $filename) or die "couldn't open $filename";
+print $f "(\n";
+foreach my $id (sort keys %names) {
+ my $name = $names{$id};
+ printf $f " '$id'%s => '$name',\n", ' ' x (16 - length($id));
+}
+print $f ")\n";
+close($f);
+
+# Read the list of supported languages.
+my $lang_names = getcwd() . '/lang-names.txt';
+-e $lang_names or die "cannot find language names file $lang_names\n";
+my @langs = group_by2(eval(cat_($lang_names)))
+ or die "error in language names file $lang_names\n";
+
+# Generate the language to keyboard mapping file.
+$filename = getcwd() . '/lang-kbds.txt';
+open($f, '>' . $filename) or die "couldn't open $filename";
+print $f "{\n";
+foreach (@langs) {
+ my ($lang) = @$_;
+ my $kbd = keyboard::lang2keyboard($lang)->{KEYBOARD};
+ $kbd = '' if !$names{$kbd};
+ printf $f " '$lang' => '$kbd',\n";
+}
+print $f "}\n";
+close($f);
diff --git a/bootloader/make-kbd-po b/bootloader/make-kbd-po
new file mode 100755
index 0000000..54ed57e
--- /dev/null
+++ b/bootloader/make-kbd-po
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2017 Mageia
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# SYNOPSIS
+#
+# This program reads the keyboard names file created by the make-kbd-info
+# program and generates a PO file containing translations of the keyboard
+# names into the language specified by the first command line argument.
+# The translations are obtained from libDrakX.
+#
+# The keyboard names file (kbd-names.txt) is searched for in the directory
+# containing this program. The PO file (${LANGUAGE}-kbd.po) is stored in
+# the current working directory.
+
+use lib qw(/usr/lib/libDrakX);
+
+use strict;
+
+use Cwd qw(abs_path getcwd);
+use MDK::Common;
+use common;
+use keyboard;
+
+# Get correct namespace (drakx-kbd-mouse-x11 instead of libDrakX).
+BEGIN { unshift @::textdomains, 'drakx-kbd-mouse-x11' }
+
+# Set the translation language.
+@ARGV == 1 && $ARGV[0] or die "Usage: make-kbd-po <language code>\n";
+$ENV{LANGUAGE} = $ARGV[0];
+
+# Read the keyboard names file.
+my $kbd_names = dirname(abs_path($0)) . '/kbd-names.txt';
+-e $kbd_names or die "cannot find keyboard name file $kbd_names\n";
+my @kbds = group_by2(eval(cat_($kbd_names)))
+ or die "error in keyboard name file $kbd_names\n";
+
+# Open the output file
+my $fn = getcwd() . '/' . $ARGV[0] . '-kbd.po';
+open(my $fh, '>' . $fn) or die "couldn't open $fn";
+
+print $fh "# This file is automatically generated\n";
+print $fh "\n";
+
+foreach (@kbds) {
+ my ($kbd, $msgid) = @$_;
+
+ # make-kbd-info strips off the prefix from the drakx-kbd-mouse-x11
+ # msgids, so we must use the original msgid to get the translation.
+ my $msgstr = translate(keyboard::KEYBOARD2text($kbd));
+
+ # Any double quote characters need to be escaped when writing the
+ # PO file.
+ $msgid =~ s/"/\\"/g;
+ $msgstr =~ s/"/\\"/g;
+
+ # Some translations contain embedded newline characters. We need
+ # all translations to be a single line.
+ $msgstr =~ s/\R/ /g;
+
+ # Write the entry for this keyboard.
+ print $fh "msgid \"$msgid\"\n";
+ print $fh "msgstr \"$msgstr\"\n";
+ print $fh "\n";
+}
+
+close($fh);
diff --git a/bootloader/po/Makefile b/bootloader/po/Makefile
new file mode 100644
index 0000000..297110e
--- /dev/null
+++ b/bootloader/po/Makefile
@@ -0,0 +1,16 @@
+PO_FILES = $(filter-out $(wildcard *-*.po), $(wildcard *.po))
+MO_FILES = $(addsuffix .mo, $(basename $(PO_FILES)))
+
+all: $(MO_FILES)
+
+%.mo: %.po %-grub.po %-kbd.po
+ msgfmt -o $@ $^
+
+%-grub.po: ../make-grub-po
+ ../make-grub-po $(basename $*)
+
+%-kbd.po: ../make-kbd-po ../kbd-names.txt
+ ../make-kbd-po $(basename $*)
+
+clean:
+ rm -f *-grub.po *-kbd.po *.mo
diff --git a/bootloader/po/bootloader.pot b/bootloader/po/bootloader.pot
new file mode 100644
index 0000000..3c70470
--- /dev/null
+++ b/bootloader/po/bootloader.pot
@@ -0,0 +1,62 @@
+# Translations for Mageia ISO boot loader
+# Copyright (C) 2017 Mageia
+#
+# NOTE: If you add a new language, please uncomment (or add if necessary)
+# the corresponding line(s) in the lang-names.txt file.
+#
+# NOTE: Except where noted, all strings must fit on a single line on the
+# bootloader screen (which may be running at a low resolution). Please keep
+# the translated strings as short as possible.
+#
+# NOTE: grub2 currently doesn't display some scripts properly. It is probably
+# best not to enable these languages. Language codes known to be affected
+# are: bn gu hi mr pa si ta
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: draklive-config\n"
+"POT-Creation-Date: 2017-11-30 14:23+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+# NOTE: Please leave "[$lang]" untranslated - it is automatically replaced
+# by the currently selected language code (e.g. en_US).
+msgid "Language [$lang]"
+msgstr ""
+
+# NOTE: Please leave "[$kbd]" untranslated - it is automatically replaced
+# by the currently selected keyboard code (e.g. us).
+msgid "Keyboard [$kbd]"
+msgstr ""
+
+msgid "[more options after boot]"
+msgstr ""
+
+msgid "Boot Mageia Live"
+msgstr ""
+
+msgid "Install Mageia Live"
+msgstr ""
+
+msgid " + use non-free video drivers (slower to boot)"
+msgstr ""
+
+msgid "Select an item with the arrow keys and press Enter to boot."
+msgstr ""
+
+msgid "Press 'c' for command line, 'e' to edit."
+msgstr ""
+
+# NOTE: The Mageia grub2 package replaces one of the upstream messages
+# with this, but doesn't provide any translations. This doesn't need
+# to fit on a single line.
+msgid ""
+"Press Ctrl-x to start, Ctrl-c for a command prompt or Escape to discard "
+"edits and return to the menu. Pressing Tab lists possible completions."
+msgstr ""
diff --git a/bootloader/po/de.po b/bootloader/po/de.po
new file mode 100644
index 0000000..d965c90
--- /dev/null
+++ b/bootloader/po/de.po
@@ -0,0 +1,62 @@
+# Translations for Mageia ISO boot loader
+# Copyright (C) 2017 Mageia
+#
+# NOTE: If you add a new language, please uncomment (or add if necessary)
+# the corresponding line(s) in the lang-names.txt file.
+#
+# NOTE: All strings must fit on a single line on the bootloader screen (which
+# may be running at a low resolution). Please keep the translated strings as
+# short as possible.
+#
+# NOTE: grub2 currently doesn't display some scripts properly. It is probably
+# best not to enable these languages. Language codes known to be affected
+# are: bn gu hi mr pa si ta
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: draklive-config\n"
+"POT-Creation-Date: 2017-11-30 14:23+0000\n"
+"PO-Revision-2017-11-30 14:23+0000\n"
+"Last-Translator: Martin Whitaker\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+# NOTE: Please leave "[$lang]" untranslated - it is automatically replaced
+# by the currently selected language code (e.g. en_US).
+msgid "Language [$lang]"
+msgstr "Sprache [$lang]"
+
+# NOTE: Please leave "[$kbd]" untranslated - it is automatically replaced
+# by the currently selected keyboard code (e.g. us).
+msgid "Keyboard [$kbd]"
+msgstr "Tastatur [$kbd]"
+
+msgid "[more options after boot]"
+msgstr "untranslated"
+
+msgid "Boot Mageia Live"
+msgstr "Mageia Live starten"
+
+msgid "Install Mageia Live"
+msgstr "Mageia Live installieren"
+
+msgid " + use non-free video drivers (slower to boot)"
+msgstr " + verwende unfreie Videotreiber (System startet langsamer)"
+
+msgid "Select an item with the arrow keys and press Enter to boot."
+msgstr "untranslated"
+
+msgid "Press 'c' for command line, 'e' to edit."
+msgstr "untranslated"
+
+# NOTE: The Mageia grub2 package replaces one of the upstream messages
+# with this, but doesn't provide any translations. This doesn't need
+# to fit on a single line.
+msgid ""
+"Press Ctrl-x to start, Ctrl-c for a command prompt or Escape to discard "
+"edits and return to the menu. Pressing Tab lists possible completions."
+msgstr "untranslated"
diff --git a/bootloader/po/fr.po b/bootloader/po/fr.po
new file mode 100644
index 0000000..4aba501
--- /dev/null
+++ b/bootloader/po/fr.po
@@ -0,0 +1,62 @@
+# Translations for Mageia ISO boot loader
+# Copyright (C) 2017 Mageia
+#
+# NOTE: If you add a new language, please uncomment (or add if necessary)
+# the corresponding line(s) in the lang-names.txt file.
+#
+# NOTE: All strings must fit on a single line on the bootloader screen (which
+# may be running at a low resolution). Please keep the translated strings as
+# short as possible.
+#
+# NOTE: grub2 currently doesn't display some scripts properly. It is probably
+# best not to enable these languages. Language codes known to be affected
+# are: bn gu hi mr pa si ta
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: draklive-config\n"
+"POT-Creation-Date: 2017-11-30 14:23+0000\n"
+"PO-Revision-Date: 2017-11-30 14:23+0000\n"
+"Last-Translator: Martin Whitaker\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+# NOTE: Please leave "[$lang]" untranslated - it is automatically replaced
+# by the currently selected language code (e.g. en_US).
+msgid "Language [$lang]"
+msgstr "Langue [$lang]"
+
+# NOTE: Please leave "[$kbd]" untranslated - it is automatically replaced
+# by the currently selected keyboard code (e.g. us).
+msgid "Keyboard [$kbd]"
+msgstr "Clavier [$kbd]"
+
+msgid "[more options after boot]"
+msgstr ""
+
+msgid "Boot Mageia Live"
+msgstr "Amorcer Mageia Live"
+
+msgid "Install Mageia Live"
+msgstr "Installer Mageia Live"
+
+msgid " + use non-free video drivers (slower to boot)"
+msgstr " + avec pilote vidéo propriétaire (démarrage lent)"
+
+msgid "Select an item with the arrow keys and press Enter to boot."
+msgstr ""
+
+msgid "Press 'c' for command line, 'e' to edit."
+msgstr ""
+
+# NOTE: The Mageia grub2 package replaces one of the upstream messages
+# with this, but doesn't provide any translations. This doesn't need
+# to fit on a single line.
+msgid ""
+"Press Ctrl-x to start, Ctrl-c for a command prompt or Escape to discard "
+"edits and return to the menu. Pressing Tab lists possible completions."
+msgstr ""