Mageia is distributed via ISO images. This page will help you to
+ choose which image best suits your needs.
There are three types of installation media:
Classical installer: Booting
+ with this media provides you with the maximum flexibility when
+ choosing what to install, and for configuring your system. In
+ particular, you have a choice of which Desktop environment to
+ install.
LIVE media: This option allows
+ you to try out Mageia without having to actually install it, or make
+ any changes to your computer. However, the Live media also includes an
+ Installer, which can be started when booting the media, or after
+ booting into the Live operating system itself.
Note
The Live Installer is simpler compared to the Classical
+ Installer - but you have fewer configuration options.
Important
Live ISOs can only be used to create “clean”
+ installations, they cannot be used to upgrade previously installed
+ Mageia releases.
Net Install: These are minimal
+ ISO's containing no more than that which is needed to start the DrakX
+ installer and find DrakX-installer-stage2 and other
+ packages that are needed to continue and complete the install. These
+ packages may be on the PC hard disk, on a local drive, on a local
+ network or on the Internet.
These media are very light (less than 100 MB) and are convenient
+ if bandwidth is too low to download a full DVD, or if you have a PC
+ without a DVD drive or is unable to boot from a USB stick.
More details are given in the next sections.
Media
Definition
Here, a medium (plural: media) is an ISO image file that allows
+ you to install and/or update Mageia and, by extension, any physical
+ medium (DVD, USB stick, ...) the ISO file is copied to.
These ISOs use the Classical installer called DrakX
They are used for performing clean installs or to upgrade a
+ previously installed version of Mageia
Different media for 32 and 64-bit architectures
Some tools are available in the Installer
+ “Welcome” screen: Rescue System, Memory
+ Test, and Hardware Detection
+ Tool
Each DVD contains many available desktop environments and
+ languages
You'll be given the choice during the installation to add
+ non-free software
Live media
Common features
Can be used to preview the Mageia operating system without
+ having to install it
The Live media also includes an Installer.
Each ISO contains only one desktop environment (Plasma,
+ GNOME or Xfce)
Different media for 32 and 64-bit architectures
They contain non-free software
Live DVD Plasma
Plasma desktop environment only
All available languages are present
64-bit architecture only
Live DVD GNOME
GNOME desktop environment only
All available languages are present
64-bit architecture only
Live DVD Xfce
Xfce desktop environment only
All available languages are present
32 or 64-bit architectures
Net install media
Common features
Different media for 32 and 64-bit architectures
First steps are English language only
netinstall.iso
Contains only free software, for those who prefer to not use
+ non-free software
netinstall-nonfree.iso
Contains non-free software (mostly drivers, codecs...) for
+ those who need it
Downloading and Checking Media
Downloading
Once you have chosen your ISO file, you can download it using
+ either http or BitTorrent. In both cases, you are provided with some
+ information, such as the mirror in use and an option to switch to an
+ alternative if the bandwidth is too low.
If http is chosen you will also see some information regarding
+ checksums.
md5sum, sha1sum and
+ sha512sum (the most secure) are tools to check the
+ ISO integrity. Copy one of the checksums (string of alphanumeric
+ characters) for use in the next section.
In the meantime, a window to download the actual ISO will
+ open:
Click on Save File, then click
+ OK.
Checking the integrity of the downloaded
+ media
The checksums referred to earlier, are digital fingerprints
+ generated by an algorithm from the file to be downloaded. You may
+ compare the checksum of your downloaded ISO against that of the original
+ source ISO. If the checksums do not match, it means that the actual data
+ on the ISO's do not match, and if that is the case, then you should
+ retry the download or attempt a repair using BitTorrent.
To generate the checksum for your downloaded ISO, open a console,
+ (no need to be root), and:
To use the md5sum, type: md5sum
+ path/to/the/image/file.iso
To use the sha1sum, type: sha1sum
+ path/to/the/image/file.iso
To use the sha512sum, type: sha512sum
+ path/to/the/image/file.iso
Example:
then compare the result (you may have to wait for a while) with
+ the ISO checksum provided by Mageia.
Burn or dump the ISO
The verified ISO can now be burned to a CD/DVD or
+ “dumped” to a USB stick. This is not a standard copy
+ operation, as a bootable medium will actually be created.
Burning the ISO to a CD/DVD
Whichever software you use, ensure that the option to burn
+ an image is used. Burn data or
+ files is NOT correct. See the the
+ Mageia wiki for more information.
Dump the ISO to a USB stick
All Mageia ISOs are hybrids, which means you can dump them to a
+ USB stick and then use that to boot and install the system.
Warning
Dumping an image onto a flash device destroys any previous
+ file-system on the device and all existing data will be lost.
Note
Also, the only partition on the flash device will then just be
+ the Mageia ISO partition.
So, if an ISO of about 4GB is written to an 8GB USB stick, the
+ stick will then only show up as 4GB. This is because the remaining 4GB
+ is no longer formatted - hence not currently available for use. To
+ recover the original capacity, you must reformat and repartition the
+ USB stick.
It is potentially *dangerous* to do this by hand. You risk
+ overwriting potentially valuable existing data if you specify the
+ wrong target device.
Open a console
Become a root (Administrator) user with
+ the command su - (don't forget the
+ - )
Plug in your USB stick - but do not mount it (this also
+ means do not open any application or file manager that could
+ access or read it)
Enter the command fdisk -l
Find the device name for your USB stick (by its size), for
+ example /dev/sdb in the screenshot above, is
+ an 8GB USB stick.
Alternatively, you can find the device name with the command
+ dmesg. Towards the end of the following
+ example, you can see the device name starting with
+ sd, and in this case,
+ sdd is the actual device. You can also see
+ that its size is 2GB:
[72594.604531] usb 1-1: new high-speed USB device number 27 using xhci_hcd
+[72594.770528] usb 1-1: New USB device found, idVendor=8564, idProduct=1000
+[72594.770533] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+[72594.770536] usb 1-1: Product: Mass Storage Device
+[72594.770537] usb 1-1: Manufacturer: JetFlash
+[72594.770539] usb 1-1: SerialNumber: 18MJTWLMPUCC3SSB
+[72594.770713] usb 1-1: ep 0x81 - rounding interval to 128 microframes, ep desc says 255 microframes
+[72594.770719] usb 1-1: ep 0x2 - rounding interval to 128 microframes, ep desc says 255 microframes
+[72594.771122] usb-storage 1-1:1.0: USB Mass Storage device detected
+[72594.772447] scsi host8: usb-storage 1-1:1.0
+[72595.963238] scsi 8:0:0:0: Direct-Access JetFlash Transcend 2GB 1100 PQ: 0 ANSI: 4
+[72595.963626] sd 8:0:0:0: [sdd] 4194304 512-byte logical blocks: (2.14 GB/2.00 GiB)
+[72595.964104] sd 8:0:0:0: [sdd] Write Protect is off
+[72595.964108] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00
+[72595.965025] sd 8:0:0:0: [sdd] No Caching mode page found
+[72595.965031] sd 8:0:0:0: [sdd] Assuming drive cache: write through
+[72595.967251] sdd: sdd1
+[72595.969446] sd 8:0:0:0: [sdd] Attached SCSI removable disk
Enter the command: dd if=path/to/the/ISO/file
+ of=/dev/sdX bs=1M
It is advisable for all Mageia installations to set a
+ superuser (Administrator) password, usually called the
+ root password in Linux. You need to repeat the same
+ password in the box underneath, to check that the first entry was not
+ mistyped.
Note
As you type a password into the top box a shield will change from
+ red-to-yellow-to-green depending on the strength of the password. A
+ green shield shows you are using a strong password.
All passwords are case-sensitive. It is best to use a mixture of
+ letters (upper and lower case), numbers and other characters in a
+ password.
Enter a user
Add a User here. A regular user has fewer privileges than the
+ superuser (root), but enough to use the Internet,
+ office applications or play games and anything else the average user might
+ use a computer for.
Icon
Click on this button if you want to change the user's
+ icon
Real Name
Insert the user's real name into this text box
Login Name
Enter the user login name or let DrakX use a version of the
+ user's real name. The login name is
+ case-sensitive.
Caution
The login entered here should be different to any login
+ currently in use for your /home directory. Some
+ user parameters will be written in the user space, and some can
+ overwrite actual data such as Firefox, Thunderbird or Kmail
+ data...
Password
Type in the user password (remembering the advice in the Note
+ above).
Password (again): Retype the
+ user password. DrakX will check that you have not mistyped the
+ password.
Note
Any users added while installing Mageia, will have a home
+ directory that is both read and write protected (umask=0027)
You can add any extra needed users in the Configuration
+ - Summary step during the install. Choose User
+ management.
The access permissions can also be changed after the
+ install.
You can boot directly from a Live DVD or USB. Usually, you just need
+ to plug the USB device in or place the DVD in the drive and restart the
+ computer.
If the computer does not automatically boot from the USB or DVD you
+ may need to reconfigure your BIOS Boot Disk priority. Alternatively, you
+ might try accessing the boot device menu to select a device from which the
+ computer will boot.
Tip
To access the BIOS or boot menu when the computer is starting, you
+ can try pressing either F2, Del or
+ Esc for the BIOS, or Esc,
+ F8, F10 or F11 for
+ the boot device menu. These (fairly common) keys are just a selection of
+ possible options though.
Note
The actual screen that you will first see when booting from the
+ Live media will depend on whether your computer motherboard is of the
+ Legacy (BIOS) or UEFI type.
In BIOS/CSM/Legacy mode
First screen while booting in BIOS mode
Menu
Boot Mageia
This option will boot the Mageia Live system from the connected
+ DVD/USB media (expect a very slow system compared to an installed
+ OS).
Once the boot is done, you can proceed to the
+ installation.
+ use non-free video drivers (slower
+ to boot)
Boot the Mageia Live system using non-free video
+ drivers
Install Mageia
This option will install Mageia to a hard disk.
+ use non-free video drivers (slower
+ to boot)
Install Mageia using non-free video drivers
Memory Test
Test the installed RAM by performing multiple read and write
+ operations. Reboot to end the test.
F2 Language
Press F2 to have the installer use a specific
+ language during the installation. Use the arrow keys to select the
+ language then press Enter.
In UEFI mode
First screen while booting in UEFI mode
Menu
Boot Mageia
This option will boot the Mageia Live system from the connected
+ DVD/USB media (expect a very slow system compared to an installed OS).
+ Once the boot is done, you can proceed to the installation
Install Mageia
This option will install Mageia to a hard disk.
F2 Language
Press F2 to have the installer use a specific
+ language during the installation. Use the arrow keys to select the
+ language then press Enter.
Note
If you booted from a USB stick, you will see the above menu
+ options duplicated, and in this case, you should choose from the menu
+ pair that will be suffixed with "USB".
In this screen you can see
+ the content of your hard drive(s) along with the DrakX partitioning
+ proposals for where to install Mageia.
The actual options
+ available from those shown below will vary according to the layout and
+ content of your particular hard drive(s).
Main Options
Use Existing Partitions
If this option is
+ available, then existing Linux compatible partitions have been found and
+ may be used for the installation.
Use Free Space
If you have unused
+ space on your hard drive then this option will use it for your new
+ Mageia installation.
Use Free Space on a Windows Partition
If you have unused
+ space on an existing Windows partition, the installer may offer to use
+ it. This can be a useful way of making room for your new Mageia
+ installation but see the warning below.
With this option, the installer displays the remaining Windows
+ partition in light blue and the proposed Mageia partition in dark blue
+ with their intended sizes just underneath. You have the option to modify
+ these sizes by clicking and dragging the gap between both partitions.
+ See the following screenshot:
Warning
This involves shrinking the size of the Windows partition, and
+ therefore is a risky operation, so you should make sure you have
+ backed up all important files before proceeding.
Important
The partition must
+ be "clean", meaning that Windows must have closed down correctly the
+ last time it was used. It must also have been defragmented, although
+ this is not a guarantee that all files in the partition have been
+ moved out of the area that is about to be used for Mageia.
Erase and use Entire Disk
This option will
+ allocate the entire drive for Mageia
Warning
This will erase ALL
+ data on the selected hard drive. Take care! If you intend to use part
+ of the disk for something else, or you already have data on the drive
+ that you are not prepared to lose, then do not use this option.
Custom Disk Partitioning
This gives you
+ complete control over the placing of the installation on your hard
+ drive(s).
If you are not using the Custom disk partitioning
+ option, then the installer will allocate the available space according to
+ the following rules:
If the total available space is less than 50 GB, then only one
+ partition is created. This will be the / (root)
+ partition.
If the total available space is greater than 50 GB, then three
+ partitions are created
6/19 of the total available place is allocated to
+ / with a maximum of 50 GB
1/19 is allocated to swap with a maximum
+ of 4 GB
the rest (at least 12/19) is allocated to
+ /home
This means that from 160 GB or greater available space, the installer
+ will create three partitions:
50 GB for /
4 GB for swap
and the remainder for /home
Note
If you are using a UEFI system, the ESP (EFI System Partition) will
+ be automatically detected - or created if it does not exist yet - and
+ mounted on /boot/EFI. The Custom disk
+ partitioning option is the only one that allows to check it has
+ been correctly done.
If you are using a Legacy (also known as BIOS) system with a GPT
+ partitioned disk, you need to create a BIOS boot partition if it doesn't
+ already exist. It should be about 1 MiB with no mount point. It can be
+ created with the Installer, under Custom disk
+ partitioning, like any other partition. Be sure to select
+ “BIOS boot partition” for filesystem type.
See DiskDrake for information on how to
+ proceed.
Important
Some newer drives are now using 4096 byte logical sectors, instead
+ of the previous standard of 512. Due to lack of available hardware, the
+ partitioning tool used in the installer has not been tested with such a
+ drive.
Some SSD devices now use an erase block size over 1 MB. If you have
+ such a device we suggest that you partition the drive in advance, using an
+ alternative partitioning tool like gparted, and to use the following
+ settings:
Align to = MiB
Free space preceding (MiB) = 2
Also make sure all partitions are created using an even number of
+ megabytes.
Choose the mount points
Here you see the Linux partitions that have been found on your
+ computer. If you don't agree with the DrakX suggestions, you can change the
+ mount points yourself.
To the left of the drop-down menus is a list of available
+ partitions. For example: sda is a hard drive - and
+ 5 is a partition number,
+ followed by the (capacity, mount point, filesystem
+ type) of the partition.
If you have several partitions, you can choose various different
+ mount points from the drop down menu, such as
+ /, /home and
+ /var. You can even make your own mount points, for
+ instance /video for a partition where you want to
+ store your films, or perhaps /Data for all your
+ data files.
For any partitions that you don't need to make use of, you can
+ leave the mount point field blank.
Warning
If you make any changes here, ensure you still have a
+ / (root) partition.
Tip
If you are not sure what to choose, click
+ Previous to go back and then tick Custom
+ disk partitioning, where you can click on a partition to see
+ its type and size.
If you are sure the mount points are correct, click on
+ Next, and choose whether you only want to format the
+ partition suggested by DrakX, or more.
Confirm hard disk to be
+ formatted
Click on
+ Previous if you are at all unsure about your
+ choice.
Click on
+ Next to proceed if you are sure that it is OK to
+ erase every partition, every operating system and all data that might be on that hard disk.
Custom Disk Partitioning with
+ DiskDrake
Modify the layout of your
+ disk(s) here. You can remove or create partitions, change the filesystem
+ or size of a partition and even view their details before you
+ start.
There is a tab at the top for
+ every detected hard disk (or other storage device, like a USB key), for
+ example: sda, sdb,
+ sdc etc.
For all other actions: click
+ on the desired partition first. Then view it, or choose a filesystem and
+ a mount point, resize it or wipe it. Expert mode
+ provides more options such as to label (name) a partition, or to choose
+ a partition type.
Continue until you have
+ adjusted everything to your satisfaction, then click
+ Done when you're ready.
Warning
Take care with the
+ Clear all option, use it only if you are sure you
+ want to wipe all partitions on the selected storage device.
If you wish to use
+ encryption on your / partition you must ensure
+ that you have a separate /boot partition. The
+ encryption option for the /boot partition must
+ NOT be set, otherwise your system will be unbootable.
Important
If you are installing Mageia on a UEFI system, check that an ESP
+ (EFI System Partition) is present and correctly mounted on
+ /boot/EFI. See Figure 1 below.
If you are installing Mageia on a Legacy/GPT system, check that
+ a BIOS boot partition is present and of the correct type. See Figure 2
+ below.
Figure 1. EFI System Partition
Figure 2. BIOS boot partition
Formatting
Here you can choose which
+ partition(s) you wish to format. Any data on partitions
+ not marked for formatting will be preserved.
Usually, at least the
+ partitions that DrakX selected need to be formatted.
Click on
+ Advanced to choose the partitions you want to check for
+ so-called bad blocks
Tip
If you're not sure you
+ have made the right choice, you can click on
+ Previous, again on Previous and
+ then on Custom to get back to the main screen, where
+ you can choose to view details of your partitions.
When you are confident
+ about the selections, click on Next to continue.
No one will see all the installer screens that you see in this
+ manual. Which screens you will see, depends on your hardware and the
+ choices you make while installing.
Finally, you will come to the desktop login screen.
Enter your user name and user password, and in a few seconds you will find yourself with a loaded KDE Plasma or GNOME desktop, depending on which live medium you used. You can now start using and enjoying your Mageia installation.
Once the bootloader has been installed, you will be prompted to halt your computer, remove the live DVD/USB stick and restart the computer.
Important
Ensure that you follow these shut-down and restart instruction steps in the same order.
When you are ready, press Finish.
When you restart, you will see a succession of download progress bars. These indicate that the software media lists are being downloaded (see Software Management).
" + "Your search returned no results for " + "" + txt_wordsnotfound + "" + "
";
+ }
+ //alert(results);
+ document.getElementById('searchResults').innerHTML = results;
+}
+
+function tokenize(wordsList){
+ var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces
+ var cleanwordsList = new Array(); // Array with the words to look for
+ for(var j in wordsList){
+ var word = wordsList[j];
+ if(typeof stemmer != "undefined" ){
+ stemQueryMap[stemmer(word)] = word;
+ } else {
+ stemQueryMap[word] = word;
+ }
+ }
+ //stemmedWordsList is the stemmed list of words separated by spaces.
+ for (var t in wordsList) {
+ wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "");
+ if (wordsList[t] != "%20") {
+ scriptLetterTab.add(wordsList[t].charAt(0));
+ cleanwordsList.push(wordsList[t]);
+ }
+ }
+
+ if(typeof stemmer != "undefined" ){
+ //Do the stemming using Porter's stemming algorithm
+ for (var i = 0; i < cleanwordsList.length; i++) {
+ var stemWord = stemmer(cleanwordsList[i]);
+ stemmedWordsList.push(stemWord);
+ }
+ } else {
+ stemmedWordsList = cleanwordsList;
+ }
+ return stemmedWordsList;
+}
+
+//Invoker of CJKTokenizer class methods.
+function cjkTokenize(wordsList){
+ var allTokens= new Array();
+ var notCJKTokens= new Array();
+ var j=0;
+ for(j=0;j";
+ return this.input.substring(this.offset,this.offset+2);
+ }
+
+ function getAllTokens(){
+ while(this.incrementToken()){
+ var tmp = this.tokenize();
+ this.tokens.push(tmp);
+ }
+ return this.unique(this.tokens);
+// document.getElementById("content").innerHTML += tokens+" ";
+// document.getElementById("content").innerHTML += " dada"+sortedTokens+" ";
+// console.log(tokens.length+"dsdsds");
+ /*for(i=0;idada"+un[i]+"- "+stems[i]+" "+ ss;
+ document.getElementById("content").innerHTML += " "+sortedTokens[i];
+ }*/
+ }
+
+ function unique(a)
+ {
+ var r = new Array();
+ o:for(var i = 0, n = a.length; i < n; i++)
+ {
+ for(var x = 0, y = r.length; x < y; x++)
+ {
+ if(r[x]==a[i]) continue o;
+ }
+ r[r.length] = a[i];
+ }
+ return r;
+ }
+}
+
+
+/* Scriptfirstchar: to gather the first letter of index js files to upload */
+function Scriptfirstchar() {
+ this.strLetters = "";
+ this.add = addLettre;
+}
+
+function addLettre(caract) {
+
+ if (this.strLetters == 'undefined') {
+ this.strLetters = caract;
+ } else if (this.strLetters.indexOf(caract) < 0) {
+ this.strLetters += caract;
+ }
+
+ return 0;
+}
+/* end of scriptfirstchar */
+
+/*main loader function*/
+/*tab contains the first letters of each word looked for*/
+function loadTheIndexScripts(tab) {
+
+ //alert (tab.strLetters);
+ var scriptsarray = new Array();
+
+ for (var i = 0; i < tab.strLetters.length; i++) {
+
+ scriptsarray[i] = "..\/search" + "\/" + tab.strLetters.charAt(i) + ".js";
+ }
+ // add the list of html files
+ i++;
+ scriptsarray[i] = "..\/search" + "\/" + htmlfileList;
+
+ //debug
+ for (var t in scriptsarray) {
+ //alert (scriptsarray[t]);
+ }
+
+ tab = new ScriptLoader();
+ for (t in scriptsarray) {
+ tab.add(scriptsarray[t]);
+ }
+ tab.load();
+ //alert ("scripts loaded");
+ return (scriptsarray);
+}
+
+/* ScriptLoader: to load the scripts and wait that it's finished */
+function ScriptLoader() {
+ this.cpt = 0;
+ this.scriptTab = new Array();
+ this.add = addAScriptInTheList;
+ this.load = loadTheScripts;
+ this.onScriptLoaded = onScriptLoadedFunc;
+}
+
+function addAScriptInTheList(scriptPath) {
+ this.scriptTab.push(scriptPath);
+}
+
+function loadTheScripts() {
+ var script;
+ var head;
+
+ head = document.getElementsByTagName('head').item(0);
+
+ //script = document.createElement('script');
+
+ for (var el in this.scriptTab) {
+ //alert (el+this.scriptTab[el]);
+ script = document.createElement('script');
+ script.src = this.scriptTab[el];
+ script.type = 'text/javascript';
+ script.defer = false;
+
+ head.appendChild(script);
+ }
+
+}
+
+function onScriptLoadedFunc(e) {
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ var isComplete = true;
+ if (typeof target.readyState != undefined) {
+
+ isComplete = (target.readyState == "complete" || target.readyState == "loaded");
+ }
+ if (isComplete) {
+ ScriptLoader.cpt++;
+ if (ScriptLoader.cpt == ScriptLoader.scripts.length) {
+ ScriptLoader.onLoadComplete();
+ }
+ }
+}
+
+/*
+function onLoadComplete() {
+ alert("loaded !!");
+} */
+
+/* End of scriptloader functions */
+
+// Array.unique( strict ) - Remove duplicate values
+function unique(tab) {
+ var a = new Array();
+ var i;
+ var l = tab.length;
+
+ if (tab[0] != undefined) {
+ a[0] = tab[0];
+ }
+ else {
+ return -1
+ }
+
+ for (i = 1; i < l; i++) {
+ if (indexof(a, tab[i], 0) < 0) {
+ a.push(tab[i]);
+ }
+ }
+ return a;
+}
+function indexof(tab, element, begin) {
+ for (var i = begin; i < tab.length; i++) {
+ if (tab[i] == element) {
+ return i;
+ }
+ }
+ return -1;
+
+}
+/* end of Array functions */
+
+
+/*
+ Param: mots= list of words to look for.
+ This function creates an hashtable:
+ - The key is the index of a html file which contains a word to look for.
+ - The value is the list of all words contained in the html file.
+
+ Return value: the hashtable fileAndWordList
+ */
+function SortResults(mots) {
+
+ var fileAndWordList = new Object();
+ if (mots.length == 0) {
+ return null;
+ }
+
+ for (var t in mots) {
+ // get the list of the indices of the files.
+ var listNumerosDesFicStr = w[mots[t].toString()];
+ //alert ("listNumerosDesFicStr "+listNumerosDesFicStr);
+ var tab = listNumerosDesFicStr.split(",");
+
+ //for each file (file's index):
+ for (var t2 in tab) {
+ var temp = tab[t2].toString();
+ if (fileAndWordList[temp] == undefined) {
+
+ fileAndWordList[temp] = "" + mots[t];
+ } else {
+
+ fileAndWordList[temp] += "," + mots[t];
+ }
+ }
+ }
+
+ var fileAndWordListValuesOnly = new Array();
+
+ // sort results according to values
+ var temptab = new Array();
+ for (t in fileAndWordList) {
+ tab = fileAndWordList[t].split(',');
+
+ var tempDisplay = new Array();
+ for (var x in tab) {
+ if(stemQueryMap[tab[x]] != undefined){
+ tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word.
+ } else {
+ tempDisplay.push(tab[x]); //no stem is available. (probably a CJK language)
+ }
+ }
+ var tempDispString = tempDisplay.join(", ");
+
+ temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length, tempDispString));
+ fileAndWordListValuesOnly.push(fileAndWordList[t]);
+ }
+
+
+ //alert("t"+fileAndWordListValuesOnly.toString());
+
+ fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly);
+ fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots);
+ //alert("t: "+fileAndWordListValuesOnly.join(';'));
+
+ var listToOutput = new Array();
+
+ for (var j in fileAndWordListValuesOnly) {
+ for (t in temptab) {
+ if (temptab[t].motsliste == fileAndWordListValuesOnly[j]) {
+ if (listToOutput[j] == undefined) {
+ listToOutput[j] = new Array(temptab[t]);
+ } else {
+ listToOutput[j].push(temptab[t]);
+ }
+ }
+ }
+ }
+ return listToOutput;
+}
+
+function resultPerFile(filenb, motsliste, motsnb, motslisteDisplay) {
+ this.filenb = filenb;
+ this.motsliste = motsliste;
+ this.motsnb = motsnb;
+ this.motslisteDisplay= motslisteDisplay;
+}
+
+function compare_nbMots(s1, s2) {
+ var t1 = s1.split(',');
+ var t2 = s2.split(',');
+ //alert ("s1:"+t1.length + " " +t2.length)
+ if (t1.length == t2.length) {
+ return 0;
+ } else if (t1.length > t2.length) {
+ return 1;
+ } else {
+ return -1;
+ }
+ //return t1.length - t2.length);
+}
\ No newline at end of file
diff --git a/draklive/9/en/content/search/punctuation.props b/draklive/9/en/content/search/punctuation.props
new file mode 100644
index 00000000..d3e3fcd2
--- /dev/null
+++ b/draklive/9/en/content/search/punctuation.props
@@ -0,0 +1,31 @@
+Punct01=\\u3002
+Punct02=\\u3003
+Punct03=\\u300C
+Punct04=\\u300D
+Punct05=\\u300E
+Punct06=\\u300F
+Punct07=\\u301D
+Punct08=\\u301E
+Punct09=\\u301F
+Punct10=\\u309B
+Punct11=\\u2018
+Punct12=\\u2019
+Punct13=\\u201A
+Punct14=\\u201C
+Punct15=\\u201D
+Punct16=\\u201E
+Punct17=\\u2032
+Punct18=\\u2033
+Punct19=\\u2035
+Punct20=\\u2039
+Punct21=\\u203A
+Punct22=\\u201E
+Punct23=\\u00BB
+Punct24=\\u00AB
+Punct25=
+Punct26=
+Punct27=\\u00A0
+Punct28=\\u2014
+
+
+
diff --git a/draklive/9/en/content/search/stemmers/de_stemmer.js b/draklive/9/en/content/search/stemmers/de_stemmer.js
new file mode 100644
index 00000000..7ff3822a
--- /dev/null
+++ b/draklive/9/en/content/search/stemmers/de_stemmer.js
@@ -0,0 +1,247 @@
+/*
+ * Author: Joder Illi
+ *
+ * Copyright (c) 2010, FormBlitz AG
+ * All rights reserved.
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html
+ * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php
+ *
+ * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license.
+ *
+ */
+
+//var stemmer = function Stemmer() {
+ /*
+ German includes the following accented forms,
+ ä ö ü
+ and a special letter, ß, equivalent to double s.
+ The following letters are vowels:
+ a e i o u y ä ö ü
+ */
+
+ var stemmer = function(word) {
+ /*
+ Put u and y between vowels into upper case
+ */
+ word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2');
+ word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2');
+
+ /*
+ and then do the following mappings,
+ (a) replace ß with ss,
+ (a) replace ae with ä, Not doing these, have trouble with diphtongs
+ (a) replace oe with ö, Not doing these, have trouble with diphtongs
+ (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs
+ So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found.
+ */
+ word = word.replace(/ß/g, 'ss');
+ //word = word.replace(/ae/g, 'ä');
+ //word = word.replace(/oe/g, 'ö');
+ //word = word.replace(/([^q])ue/g, '$1ü');
+
+ /*
+ R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters.
+ R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel.
+ R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel.
+ */
+
+ var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+
+ if (r1Index != -1) {
+ var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ }
+ }
+
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t.
+ Define a valid st-ending as the same list, excluding letter r.
+ */
+
+ /*
+ Do each of steps 1, 2 and 3.
+ */
+
+ /*
+ Step 1:
+ Search for the longest among the following suffixes,
+ (a) em ern er
+ (b) e en es
+ (c) s (preceded by a valid s-ending)
+ */
+ var a1Index = word.search(/(em|ern|er)$/g);
+ var b1Index = word.search(/(e|en|es)$/g);
+ var c1Index = word.search(/([bdfghklmnrt]s)$/g);
+ if (c1Index != -1) {
+ c1Index++;
+ }
+ var index1 = 10000;
+ var optionUsed1 = '';
+ if (a1Index != -1 && a1Index < index1) {
+ optionUsed1 = 'a';
+ index1 = a1Index;
+ }
+ if (b1Index != -1 && b1Index < index1) {
+ optionUsed1 = 'b';
+ index1 = b1Index;
+ }
+ if (c1Index != -1 && c1Index < index1) {
+ optionUsed1 = 'c';
+ index1 = c1Index;
+ }
+
+ /*
+ and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s.
+ (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis)
+ */
+
+ if (index1 != 10000 && r1Index != -1) {
+ if (index1 >= r1Index) {
+ word = word.substring(0, index1);
+ if (optionUsed1 == 'b') {
+ if (word.search(/niss$/) != -1) {
+ word = word.substring(0, word.length -1);
+ }
+ }
+ }
+ }
+ /*
+ Step 2:
+ Search for the longest among the following suffixes,
+ (a) en er est
+ (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters)
+ */
+
+ var a2Index = word.search(/(en|er|est)$/g);
+ var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g);
+ if (b2Index != -1) {
+ b2Index += 4;
+ }
+
+ var index2 = 10000;
+ var optionUsed2 = '';
+ if (a2Index != -1 && a2Index < index2) {
+ optionUsed2 = 'a';
+ index2 = a2Index;
+ }
+ if (b2Index != -1 && b2Index < index2) {
+ optionUsed2 = 'b';
+ index2 = b2Index;
+ }
+
+ /*
+ and delete if in R1.
+ (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters)
+ */
+
+ if (index2 != 10000 && r1Index != -1) {
+ if (index2 >= r1Index) {
+ word = word.substring(0, index2);
+ }
+ }
+
+ /*
+ Step 3: d-suffixes (*)
+ Search for the longest among the following suffixes, and perform the action indicated.
+ end ung
+ delete if in R2
+ if preceded by ig, delete if in R2 and not preceded by e
+ ig ik isch
+ delete if in R2 and not preceded by e
+ lich heit
+ delete if in R2
+ if preceded by er or en, delete if in R1
+ keit
+ delete if in R2
+ if preceded by lich or ig, delete if in R2
+ */
+
+ var a3Index = word.search(/(end|ung)$/g);
+ var b3Index = word.search(/[^e](ig|ik|isch)$/g);
+ var c3Index = word.search(/(lich|heit)$/g);
+ var d3Index = word.search(/(keit)$/g);
+ if (b3Index != -1) {
+ b3Index ++;
+ }
+
+ var index3 = 10000;
+ var optionUsed3 = '';
+ if (a3Index != -1 && a3Index < index3) {
+ optionUsed3 = 'a';
+ index3 = a3Index;
+ }
+ if (b3Index != -1 && b3Index < index3) {
+ optionUsed3 = 'b';
+ index3 = b3Index;
+ }
+ if (c3Index != -1 && c3Index < index3) {
+ optionUsed3 = 'c';
+ index3 = c3Index;
+ }
+ if (d3Index != -1 && d3Index < index3) {
+ optionUsed3 = 'd';
+ index3 = d3Index;
+ }
+
+ if (index3 != 10000 && r2Index != -1) {
+ if (index3 >= r2Index) {
+ word = word.substring(0, index3);
+ var optionIndex = -1;
+ var optionSubsrt = '';
+ if (optionUsed3 == 'a') {
+ optionIndex = word.search(/[^e](ig)$/);
+ if (optionIndex != -1) {
+ optionIndex++;
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'c') {
+ optionIndex = word.search(/(er|en)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r1Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'd') {
+ optionIndex = word.search(/(lich|ig)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ Finally,
+ turn U and Y back into lower case, and remove the umlaut accent from a, o and u.
+ */
+ word = word.replace(/U/g, 'u');
+ word = word.replace(/Y/g, 'y');
+ word = word.replace(/ä/g, 'a');
+ word = word.replace(/ö/g, 'o');
+ word = word.replace(/ü/g, 'u');
+
+ return word;
+ };
+//}
\ No newline at end of file
diff --git a/draklive/9/en/content/search/stemmers/en_stemmer.js b/draklive/9/en/content/search/stemmers/en_stemmer.js
new file mode 100644
index 00000000..f58012f2
--- /dev/null
+++ b/draklive/9/en/content/search/stemmers/en_stemmer.js
@@ -0,0 +1,187 @@
+// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original
+// paper, in
+//
+// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14,
+// no. 3, pp 130-137,
+//
+// see also http://www.tartarus.org/~martin/PorterStemmer
+
+// Release 1 be 'andargor', Jul 2004
+// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009
+
+
+var stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ return function (w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4,
+ origword = w;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem)) { w = stem + "i"; }
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ }
+})();
\ No newline at end of file
diff --git a/draklive/9/en/content/search/stemmers/fr_stemmer.js b/draklive/9/en/content/search/stemmers/fr_stemmer.js
new file mode 100644
index 00000000..34f97431
--- /dev/null
+++ b/draklive/9/en/content/search/stemmers/fr_stemmer.js
@@ -0,0 +1,299 @@
+/*
+ * Author: Kasun Gajasinghe
+ * E-Mail: kasunbg AT gmail DOT com
+ * Date: 09.08.2010
+ *
+ * usage: stemmer(word);
+ * ex: var stem = stemmer(foobar);
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var stemmer = function(word){
+// Letters in French include the following accented forms,
+// â à ç ë é ê è ï î ô û ù
+// The following letters are vowels:
+// a e i o u y â à ë é ê è ï î ô û ù
+
+ word = word.toLowerCase();
+ var oriWord = word;
+ word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel
+ word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y');
+ word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1');
+
+ var rv='';
+ var rvIndex = -1;
+ if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){
+ rv = word.substring(3);
+ rvIndex = 3;
+ } else {
+ rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/);
+ if(rvIndex != -1){
+ rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex
+ rv = word.substring(rvIndex);
+ } else {
+ rvIndex = word.length;
+ }
+ }
+
+// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel.
+// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel
+ var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ } else {
+ r1Index = word.length;
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+ if (r1Index != -1) {
+ r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ r2Index = word.length;
+ }
+ }
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Step 1: Standard suffix removal
+ */
+ var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/);
+ var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/);
+ var a3Index = word.search(/(logie|logies)$/);
+ var a4Index = word.search(/(usion|ution|usions|utions)$/);
+ var a5Index = word.search(/(ence|ences)$/);
+ var a6Index = word.search(/(ement|ements)$/);
+ var a7Index = word.search(/(ité|ités)$/);
+ var a8Index = word.search(/(if|ive|ifs|ives)$/);
+ var a9Index = word.search(/(eaux)$/);
+ var a10Index = word.search(/(aux)$/);
+ var a11Index = word.search(/(euse|euses)$/);
+ var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/);
+ var a13Index = word.search(/(amment)$/);
+ var a14Index = word.search(/(emment)$/);
+ var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/);
+
+ if(a1Index != -1 && a1Index >= r2Index){
+ word = word.substring(0,a1Index);
+ } else if(a2Index != -1 && a2Index >= r2Index){
+ word = word.substring(0,a2Index);
+ var a2Index2 = word.search(/(ic)$/);
+ if(a2Index2 != -1 && a2Index2 >= r2Index){
+ word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(a3Index != -1 && a3Index >= r2Index){
+ word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2
+ } else if(a4Index != -1 && a4Index >= r2Index){
+ word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2
+ } else if(a5Index != -1 && a5Index >= r2Index){
+ word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2
+ } else if(a6Index != -1 && a6Index >= rvIndex){
+ word = word.substring(0,a6Index);
+ if(word.search(/(iv)$/) >= r2Index){
+ word = word.replace(/(iv)$/, '');
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ }
+ } else if(word.search(/(eus)$/) != -1){
+ var a6Index2 = word.search(/(eus)$/);
+ if(a6Index2 >=r2Index){
+ word = word.substring(0, a6Index2);
+ } else if(a6Index2 >= r1Index){
+ word = word.substring(0,a6Index2)+"eux";
+ }
+ } else if(word.search(/(abl|iqU)$/) >= r2Index){
+ word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2,
+ } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){
+ word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2,
+ }
+ } else if(a7Index != -1 && a7Index >= r2Index){
+ word = word.substring(0,a7Index); //delete if in R2
+ if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise,
+ var a7Index2 = word.search(/(abil)$/);
+ if(a7Index2 >=r2Index){
+ word = word.substring(0, a7Index2);
+ } else {
+ word = word.substring(0,a7Index2)+"abl";
+ }
+ } else if(word.search(/(ic)$/) != -1){
+ var a7Index3 = word.search(/(ic)$/);
+ if(a7Index3 != -1 && a7Index3 >= r2Index){
+ word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(word.search(/(iv)$/) != r2Index){
+ word = word.replace(/(iv)$/,'');
+ }
+ } else if(a8Index != -1 && a8Index >= r2Index){
+ word = word.substring(0,a8Index);
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ if(word.search(/(ic)$/) >= r2Index){
+ word = word.replace(/(ic)$/, '');
+ } else { word = word.replace(/(ic)$/, 'iqU'); }
+ }
+ } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau')
+ } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al')
+ } else if(a11Index != -1 ){
+ var a11Index2 = word.search(/(euse|euses)$/);
+ if(a11Index2 >=r2Index){
+ word = word.substring(0, a11Index2);
+ } else if(a11Index2 >= r1Index){
+ word = word.substring(0, a11Index2)+"eux";
+ }
+ } else if(a12Index!=-1 && a12Index>=r1Index){
+ word = word.substring(0,a12Index+1); //+1- amendment to non-vowel
+ } else if(a13Index!=-1 && a13Index>=rvIndex){
+ word = word.replace(/(amment)$/,'ant');
+ } else if(a14Index!=-1 && a14Index>=rvIndex){
+ word = word.replace(/(emment)$/,'ent');
+ } else if(a15Index!=-1 && a15Index>=rvIndex){
+ word = word.substring(0,a15Index+1);
+ }
+
+ /* Step 2a: Verb suffixes beginning i*/
+ var wordStep1 = word;
+ var step2aDone = false;
+ if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){
+ step2aDone = true;
+ var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i;
+ if(word.search(b1Regex) >= rvIndex){
+ word = word.replace(b1Regex,'$1');
+ }
+ }
+
+ /* Step 2b: Other verb suffixes*/
+ if (step2aDone && wordStep1 == word) {
+ if (word.search(/(ions)$/) >= r2Index) {
+ word = word.replace(/(ions)$/, '');
+ } else {
+ var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i;
+ if (word.search(b2Regex) >= rvIndex) {
+ word = word.replace(b2Regex, '');
+ } else {
+ var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex) >= rvIndex) {
+ word = word.replace(b3Regex, '');
+ } else {
+ var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex2) >= rvIndex) {
+ word = word.replace(b3Regex2, '');
+ }
+ }
+ }
+ }
+ }
+
+ if(oriWord != word.toLowerCase()){
+ /* Step 3 */
+ var rep = '';
+ if(word.search(/Y$/) != -1) {
+ word = word.replace(/Y$/, 'i');
+ } else if(word.search(/ç$/) != -1){
+ word = word.replace(/ç$/, 'c');
+ }
+ } else {
+ /* Step 4 */
+ //If the word ends s, not preceded by a, i, o, u, è or s, delete it.
+ if (word.search(/([^aiouès])s$/) >= rvIndex) {
+ word = word.replace(/([^aiouès])s$/, '$1');
+ }
+ var e1Index = word.search(/ion$/);
+ if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) {
+ word = word.substring(0, e1Index);
+ } else {
+ var e2Index = word.search(/(ier|ière|Ier|Ière)$/);
+ if (e2Index != -1 && e2Index >= rvIndex) {
+ word = word.substring(0, e2Index) + "i";
+ } else {
+ if (word.search(/e$/) >= rvIndex) {
+ word = word.replace(/e$/, ''); //delete last e
+ } else if (word.search(/guë$/) >= rvIndex) {
+ word = word.replace(/guë$/, 'gu');
+ }
+ }
+ }
+ }
+
+ /* Step 5: Undouble */
+ //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1');
+ word = word.replace(/(en|on)(n)$/,'$1');
+ word = word.replace(/(ett)$/,'et');
+ word = word.replace(/(el|eil)(l)$/,'$1');
+
+ /* Step 6: Un-accent */
+ word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1');
+ word = word.toLowerCase();
+ return word;
+};
+
+var eqOut = new Array();
+var noteqOut = new Array();
+var eqCount = 0;
+/*
+To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output.
+Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will
+compare the output with COut.
+ (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This
+ will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help.
+ */
+function testFr(){
+ var start = new Date().getTime(); //execution time
+ eqCount = 0;
+ eqOut = new Array();
+ noteqOut = new Array();
+ for(var k=0;k
+
+
+
+ Select Keyboard
diff --git a/draklive/9/en/content/selectLanguage.html b/draklive/9/en/content/selectLanguage.html
new file mode 100644
index 00000000..b0c6cca0
--- /dev/null
+++ b/draklive/9/en/content/selectLanguage.html
@@ -0,0 +1,44 @@
+
+
+
+
+ Please choose a language to use
Select your preferred language. Mageia will use this selection
+ during the installation and for your installed system.
Mageia uses UTF-8 (Unicode) support by default. This may be
+ disabled in the Multiple languages screen if you
+ know that it is inappropriate for your language. Disabling UTF-8 applies
+ to all installed languages.
You can change the language for your system post-installation in
+ the Mageia Control Center → System → localization for your system.
GRUB2 (with or without graphical menu) will be used
+ exclusively as the bootloader for a Legacy/MBR or Legacy/GPT
+ system.
By default, a new bootloader will be written into either the
+ MBR (Master Boot Record) of your first hard drive or in the BIOS
+ boot partition.
Grub2-efi on UEFI
+ systems
GRUB2-efi or rEFInd may be used as the bootloader for a UEFI
+ system.
By default, a new bootloader (Grub2-efi) will be written into
+ the ESP (EFI System Partition).
If there are already UEFI-based operating systems installed on
+ your computer (Windows 8 for example), the Mageia installer will
+ detect the existing ESP created by Windows and add grub2-efi to it.
+ If no ESP exists, then one will be created. Although it is possible
+ to have several ESPs, only one is required, whatever the number of
+ operating systems you have.
rEFInd
rEFInd on UEFI systems
rEFInd has a nice graphical set of options, and can
+ auto-detect installed EFI bootloaders. See:
+ http://www.rodsbooks.com/refind/
Note
Please note that in order to be able to use the
+ rEFInd option, an installed EFI System Partition
+ must match your system architecture: if you have a 32bit EFI System
+ Partition installed on a 64bit machine for instance, then the rEFInd
+ option will not be displayed/available to you.
Bootloader Setup
Bootloader main options
Bootloader to use
GRUB2 (with either a graphical
+ or a text menu), can be chosen for both Legacy
+ MBR/BIOS systems and UEFI
+ systems.
rEFInd (with a graphical menu)
+ is an alternative option solely for use with
+ UEFI systems.
Boot device
Warning
Don't change this unless you really know what you are
+ doing.
Note
There is no option to write GRUB to the boot sector of a
+ partition (e.g: sda1), as this method is
+ considered unreliable.
When using UEFI mode, then the Boot
+ device will be listed as EFI System
+ Partition.
Delay before booting the default
+ image
This text box lets you set a delay, in seconds, before the
+ default operating system is started up.
Security
This allows you to set a password for the bootloader. This
+ means a username and password will be required when booting in order
+ to select a booting entry or change settings. This is optional, and
+ most people are not likely to have a need for it. The username is
+ root and the password is the one chosen
+ hereafter.
Password
Choose a password for the bootloader (optional)
Password (again)
Retype the password and DrakX will check that it matches with
+ the one set above
Advanced
Enable ACPI
ACPI (Advanced Configuration and Power Interface) is a
+ standard for power management. It can save energy by stopping unused
+ devices. Deselecting it could be useful if, for example, your
+ computer does not support ACPI or if you think the ACPI
+ implementation might cause some problems (for instance random
+ reboots or system lockups).
Enable SMP
This option enables/disables symmetric multiprocessing for
+ multi-core processors
Enable APIC
Enabling this gives the operating system access to the
+ Advanced Programmable Interrupt Controller. APIC devices permit more
+ complex priority models, and Advanced IRQ (Interrupt Request)
+ management.
Enable Local APIC
Here you can set Local APIC, which manages all external
+ interrupts for a specific processor in an SMP system
Bootloader Configuration
If, in the previous section you selected rEFInd
+ as the bootloader to use, you would then be presented with the options
+ shown in the screenshot directly below. Otherwise, please instead move
+ on to the subsequent screenshot for your options.
Your rEFInd configuration options:
Install or update rEFInd in the EFI
+ system partition.
Install in /EFI/BOOT.
This option installs the bootloader in the /EFI/BOOT directory
+ of the ESP (EFI System Partition). This can be useful when:
(a) Installing onto a removable drive (e.g. a USB stick) that can be removed and plugged into a different machine. If the bootloader is stored in /EFI/BOOT, UEFI BIOS's will detect it and allow you to boot from that drive.
(b) As a workaround where, due to a buggy UEFI BIOS, the newly
+ written bootloader for Mageia will not be recognized at end of the
+ installation.
If you did not select rEFInd as the bootloader to use in the
+ previous section, then your bootloader configuration options are shown
+ below:
Default
The operating system to be started up by default.
Append
This option lets you pass information to the kernel or tell
+ the kernel to give you more information as it boots.
Probe foreign OS
If you already have other operating systems installed, Mageia
+ attempts to add them to your new Mageia boot menu. If you don't want
+ this behaviour, then untick the Probe Foreign
+ OS option.
Install in /EFI/BOOT. (Note:
+ this menu option only becomes available where the installer detects
+ that a machine is in UEFI mode).
This option installs the bootloader in the /EFI/BOOT directory
+ of the ESP (EFI System Partition). This can be useful when:
(a) Installing onto a removable drive (e.g. a USB stick) that can be removed and plugged into a different machine. If the bootloader is stored in /EFI/BOOT, UEFI BIOS's will detect it and allow you to boot from that drive.
(b) As a workaround where, due to a buggy UEFI BIOS, the newly
+ written bootloader for Mageia will not be recognized at end of the
+ installation.
Advanced
Video mode
This sets the screen size and colour depth to be used by the
+ boot menu. If you click the down-triangle you will be offered other
+ size and colour depth options.
Do not touch ESP or MBR
Select this option if you don't want a bootable Mageia, but
+ would rather chain-load it from another OS. You will get a warning
+ that the bootloader is missing. Click Ok
+ only if you are sure you understand the implications,
+ and wish to proceed.
Warning
Chain-loading via legacy bootloaders (GRUB Legacy and LiLo)
+ is no longer supported by Mageia as it is likely to fail when
+ attempting to boot this resulting installation of Mageia. If you
+ use anything other than GRUB2 or rEFInd for this purpose, then you
+ do so at your own risk!
Other Options
Using an existing bootloader
The exact procedure for adding Mageia to an existing bootloader is beyond the scope of this documentation. However, in most cases it will involve running the relevant bootloader installation program, which should detect Mageia and automatically add an entry for it in the bootloader menu. See the documentation for the relevant operating system.
Installing Without a Bootloader
While you can opt to install Mageia without a bootloader (see
+ section 2.1 Advanced), this is not recommended unless you absolutely
+ know what you are doing, as without some form of bootloader your
+ operating system will be unable to start.
Add or Modify a Boot Menu
+ Entry
To do this you need to manually edit /boot/grub2/custom.cfg or use the
+ software grub-customizer tool instead
+ (available in the Mageia repositories).
This is the screen you will see if you selected the Boot Mageia option from the Live media menu.
Testing hardware
One of the aims of using the Live mode is to test that your
+ hardware is correctly managed by Mageia. You can check if all devices
+ have a driver in the Hardware section of the Mageia Control
+ Center:
network interface: configure it with net_applet
graphics card: if you see the previous screen, it's already
+ OK.
sound: a jingle has already been played
printer: configure your printer/s and print a test page
scanner: scan a document from ...
If everything is satisfactory, you can proceed with the
+ installation. If not, you can use the Quit button
+ to exit.
Note
The configuration settings you apply here are carried over if
+ you decide to proceed with the installation.
Launch installation
To launch the installation of the Live DVD to a hard disk or SSD
+ drive, simply click the Install on Hard Disk icon
+ on the Live desktop. You will then see this screen, followed by the
+ Partitioning step.
If Mageia didn't convince you or you can't install it correctly - in
+ short you want get rid of it - that is your right and Mageia also gives you
+ the possibility to uninstall. This is not true for every operating
+ system.
After backing up your data, reboot your Mageia installation DVD and
+ select Rescue system, then Restore Windows
+ boot loader. At the next boot, you will only have Windows, with
+ no option to choose your Mageia operating system.
In Windows, to recover the space used by Mageia partitions: click on
+ Start → Control Panel → Administrative Tools → Computer Management → Storage → Disk Management. You will recognise a Mageia partition because they are
+ labeled Unknown, and also by their size and place on the
+ disk. Right-click on each of these partitions and select
+ Delete to free up the space.
If you are using Windows XP, you can create a new partition and format
+ it (FAT32 or NTFS). It will then get a partition letter.
If you have Vista or 7, you have one more possibility, you can extend
+ the existing partition that is at the left of the freed space. There are
+ other partitioning tools that can be used, such as gparted, available for both Windows and Linux. As
+ always, when changing partitions, be very careful to back up anything
+ important to you.
In this step, the installer looks for unused locales packages and
+ unused hardware packages and you are then given an opportunity to delete
+ them.
If you do not foresee a case where your installation may need to run
+ on different hardware, or that you might need additional localization files
+ then you might wish to accept this proposal.
Clicking Advanced will list the unused hardware
+ and localization files that will be removed if you proceed.
The next step is the copying of files to hard disk. This process
+ should just take a little while to complete. When it is finishing you will
+ briefly get a blank screen - this is normal.