Internationalisation

Perhaps this query ought to go into the i18n forum but I was wondering what others do in the internationalization of their applications, in particular J2EE-based. One problem I keep running into is the placement of text on the generated HTML pages. For example, if a sentence fragment is some 30 chars. in english, in french it may be upto 30-50% greater in length, leading to format problems.
thanks, domo arrigato, merci, danke, shukria

V.I Ulyanov,
thanks for your suggestion. we have implemented a system with a custom tag handler + XML file with the appropriate text. We still run into the sentence length fragment problem even when one of the attributes of a tag is length and formatting should based on this length.
spasibo.

Similar Messages

  • Internationalisation in WD ABAP

    hi,
    i am new in Wd ABAP, i need to use internationalisation with OTR texts.
    plz suggest and also give some dummy program if possible.

    Hi Pankaj,
    Check this standard program.
    WDR_TEST_MISC
    also check this document.
    http://help.sap.com/saphelp_nw04s/helpdata/en/0a/784941bb75f623e10000000a155106/frameset.htm

  • Problems with Internationalisation

    Hi All,
    We have built an enterprise class, web based, J2EE application built on Orion Application Server, Apache Struts and Oracle (no surprises here :) ) database. The application is internationalised to cater to various European languages and the internationalisation is achieved through standard methods like usage of Resource Bundles etc. The problem that we face (and this happens only when we run the application on Solaris - not on Windows) is that after an hour or so, all the internationalised characters are replaced by a ?. This happens only after some time and a restart of the application server removes the problem. I would really appreciate if somebody could shed some light on this rather weird problem.- maybe we are screwing up somewhere. One place I suspect is that the charset in the jsp (or rather the HTML) is set to ISO 8859-1 which should be UTF8 - However we are displaying Spanish, German, French and Italian so shouldn't the default char set take care? The funniest part is that we do not face the same problem on NT
    Thanks in advance for the help.
    Regards
    Saumitra

    Thanks for your reponse - I have isolated the problem to this:
    I have a table which contains spanish / german data (which means special characters like umlauts, accents etc). When I read the data using JDBC calls and display it through a scriptlet, it all looks fine. When I do the display using any of struts tags (e.g. logic:iterate ) it works fine for a while. After a couple of hours (don't know how many hours it takes to reproduce this problem) , all the special characters like umlauts get replaced by a ?. Further, this problem happens only on Solaris and I could not replicate this problem on Windows NT.
    My setup is:
    Orion J2EE sever 1.0.2.2.1
    Apache Struts 1.0
    Solaris 5.8 running on SPARC machines
    JDK 1.3.0 (Full Version)
    I would really appreciate any help on this.
    Thanks in advance

  • Internationalised Example Help Needed

    My goal here is to put together an easily understandable example of an Internationalised stand-alone java application.
    To start, I would like to create a stand-alone java application that performs the following tasks:
    1. Has a pulldown that allows a user to select a language (English, Arabic, Korean, Greek, etc.) When the language is selected, I want to change the properties of a JTextFild so that when a user types in the JTextField, the characters that come out in the JTextField are in the language that was selected in the pulldown. I know how to create the pulldown, but how do I change the properties of the TextField dynamically?
    2. I have a JButton that, when pressed, stores the language selected AND the characters in the JTextField into a Sybase Database. It also adds the same info to a JList that displays a list of text strings (in the language that they were entered) with their selected language (in English). My questions here are:
    - How should I store the text in the database (Hex or Unicode?)
    - Is it possible to have a JList display different languages on different lines within the list?
    - Is there a generic font that can display ALL types of languages?
    Any help (especially code samples) would be greatly appreciated. I have read the tutorials on this site, but I didn't see anything that would help.

    What do you mean when you say "the characters that come out in the JTextField are in the language that was selected in the pulldown"? The characters that are displayed in the field depend on the characters that the user inputs. There are no properties to change.
    2. I have a JButton that, when pressed, stores the
    language selected AND the characters in the
    JTextField into a Sybase Database. It also adds the
    same info to a JList that displays a list of text
    strings (in the language that they were entered) with
    their selected language (in English). My questions
    here are:
    - How should I store the text in the database (Hex
    Hex or Unicode?)I don't know Sybase, so there may be implementation-specific issues, but for the DBs that I know, it would only make sense to configure the DB to store eveything in Unicode. If you store hex values, the DB will not be able to perform locale-dependent collation, etc.
    >
    - Is it possible to have a JList display different
    ent languages on different lines within the list?
    Yes, why not? As long as everything is in Unicode, you can display anything you want anywhere you want (single characters alternating, for that matter)
    - Is there a generic font that can display ALL
    ALL types of languages?Well, there are Unicode fonts that support MOST languages, but I think there will always be edge cases with new character sets that have only recently been added to the Unicode standard.
    Any help (especially code samples) would be greatly
    appreciated. I have read the tutorials on this site,
    but I didn't see anything that would help.In that case I recommend that you find some of the books on Java internationalization and study them. A simple Google search will also give you some helpful links.

  • Internationalise iviews and menus

    Translation worklist coordinator:
    hi all,
    i want to translate my iview names and menus to German.i did one sample eg. with one iview. proceeded in the following way:
    1.Create a Worklist Translation
    A2.dd content to translation worklist
    3.Generate Translation data
    Worklist Translation:
    1.Translate worklist
    2.Save and mark worklist as “translated”
    Translation worklist coordinator:
    1.Load Worklist into the Portal
    But even after the last step my iview is displayed in english itslf in portal.have given this iview to a user also. do i have to do anyother step for internationalise my things?
    thnks and regards
    kukku

    hi Jane,
    thanks a lot!!! it worked for me. i selected the language for user as german and it worked!!!.have contributed points to u..
    thanks a lot...
    regards
      kukku

  • Internationalisation Problem

    Hi experts,
    I am using ResourceBundle for implementing internationalization concept.when i am deploying my application WebDynpro creates a default language property file in the package.
    like "com.sap.internationalisation.wdp.ResourceInternationalisationComp"
    Now i am  creating  a property file with german language by copying existing property file with language specific changes. and placing it in the same location where your default property file is placed.
    Now i am changing browser language to german and putting it in first order.
    when i deploy my application it is not picking german property file Instead it is taking default property file.
    Is there any other setting need to be done..
    Thanks in advance

    Hi Sushma,
    Suppose if Your Application has One View named " XYZView ".
    You Wants to Apply Internationalization to that Application in the German Language Follow the below Steps.
    1.) Go to Navigator --> Your Application --> Expand it --> src --> packages --> your Package Path --> there you find " XYZView.wdview.xlf " file.
    2.) It contains labels, table headers, ... etc.
    3.) Suppose If You wants your Application to be Internationalized to German Language then Copy the above file ( " XYZView.wdview.xlf " ) and Paste it in the same Folder and rename it as ("XYZView.wdview_de.xlf").
    4.) The file ("XYZView.wdview_de.xlf") contains all labels, table headers, ..... etc. in English it self.
    5.) Now you Double Click on ("XYZView.wdview_de.xlf") & go to Resource Text Tab. Select One Entry --> Right Click on it --> Click Edit --> New Window Opens --> In that Window Replace English Word with Equivalent German Word for Text Input Field --> Press OK.
    6.) Repeat Step 5 for all Entries in the file ("XYZView.wdview_de.xlf").
    7.) Save the Application.
    8.) Reload the Application.
    9.) Now the Application is Internationalized for German Language.
    10.) To Test the Application Change the Browser's Local Setting to German and Deploy the Application.
    Now the Application Works in German Language.
    If you have any more Doubts Reply with them back.
    With Regards,
    RooP KumaR.

  • Portal internationalisation

    Hi,
    This question has already been asked ( http://newsgroups.bea.com/cgi-bin/dnewsweb?cmd=article&group=weblogic.developer.interest.portal&item=5037&utag=
    ) but without any valid answer.
    How can we localise the whole portal, including page names, portlet names ...,
    specifying the preferred local programmatically (depending on the user profile
    for instance).
    By default, portal use the locale of the browser. It is easy to use another one
    in the portlets, through the i18n tags.
    however, I found nowhere how to change the default behaviour for the portlet or
    page titles !!!
    Looking in singlelevelmenu.jsp, the page titles are retrieved using getTitle()
    method of the class com.bea.netuix.servlets.controls.page.PagePresentationContext.
    Do this class manage internationalisation ? If yes, how can we change the preferred
    locale programmatically.
    I tried including i18n tag in this jsp, but it changed nothing.
    Thanks,
    Christophe

    Hi
    I think it is better to use <i18> tag itself as when we change the locale object
    it dynamically refer to the particular resource bundle.
    "Pramit" <[email protected]> wrote:
    >
    Hi Mani
    Thanks for the answer.
    I went through Weblogic8.1 docs. They also refer to Message Catalogs.
    So which
    one do you think is the better approach <i18> oressage Catalogues
    Thanks in advance
    Pramit
    "Manikandan" <[email protected]> wrote:
    "Pramit Jain" <[email protected]> wrote:
    Hi
    I am doing business estimation for a pharmaceutical existing site to
    migrate to
    BEA Portal 8.1.
    For that I need the Localisation strategies and best practises followed
    for Internationalisation
    in BEA portal 8.1.
    It would be great if I can get some information on the same.
    Thanks
    PramitHi Pramit
    For localization issues weblogic 8.1 provides <i18 /> tag, where u can
    refer to
    a particular locale and display the labels picking up from the resource
    bundle.Refer
    <i18> tag for more details.
    Regards,
    Mani

  • Encoding in Java XSU internationalisation problem

    I have SUN Solaris 2.7, JDK 1.2, Oracle 8.0.5, Oracle XSU 1.2. When I use KOI8-R text encoding and set this in XSU then I see only signs "?????", but if I set ISO-8859-1 then it's Ok. I could work with ISO-8859-1, but in Oracle it stores bad text. Only latinian words was stored successful.

    A new user name?
    I can think of ways round your problem but can you first provide a reference that indicates that byte 0x80 is the MS936 encoding for the Euro?
    P.S. This is a forum and the vast majority of participants, including me, have no direct relationship with Oracle so getting definitive answers from Oracle via this forum is unlikely. If you think you have found a bug in 1.5 and/or 1.6, and I am not convinced you have, you need to report it via the bug database. If it is a bug then the response time for a fix is likely to be months rather than days.
    P.P.S No I can't explain why it works in 1.7!

  • Chinese Internationalisation

    I need to save Chinese Characters through java application to database.
    USing Java InputMethod Framework i was able to type chinese in textarea.
    I also changed database field type to nvarchar2 and tried saving.
    The data got from the textfield or textarea using getText() method is in '????' format.And the data saved in database is in some other format.
    When i retrievd the value from database, and tried to set text in text area,nothing was displayed. Is this not the right way to do?How should i solve the problem?

    I belive chinese characters are especially unplesant to handle because there is more than 256 of them (correct me if I'm wrong). If I were you I would do following steps:
    1. Make sure your OS has proper chinese support. You should be able to display chinese windows titles, switch keyboard to chinese and have chinese font. If you have JEdit then beeing able to type chinese text in it will be good proof. There is chinese keyboard isn't it?
    2. Get well prooven unicode codes for text you try to put in database. It can be done by editing document in JEdit and saving it with Unicode (16 bit) encoding. You can the open it in hex viewer and get codes for text;
    3. When you get data from JTextField dump it to System.out character by character converting each of them to number ie. System.out.print(((int)my_string.charAt(i)) & 0xffff). Verify if it matches known codes. If it does, then input to Java works ok. If not, you may need to change system locale or do something about what I don't know at all. I don't know the byte order in unicode files so there would be better to dump codes in hex;
    4. If typed text does not show correctly in JTextField but it has proper codes then problem is with font. Maybe you don't have chinese font which matches font familly used by JTextField. Reading about how Swing displays fonts will help here;
    5. Once you have your Unicode data you have to make sure that your database can store it. Contact with database supplier if it supports either Unicode16 or UTF-8 encodings. If it does not, you are it troubles. If database is not unicode then it will make attempts to convert your texts to known selected code page. What is "nvarchar2" ? . Note, transfers to database goes through JDBC which may also do some unwanted conversions.
    6. Transfer your text to database and read it back. Check again codes of characters to eliminate displaying problems.
    If all above steps will not allow you to isolate problem feel free to ask again.
    P.S.
    If you are not tied to specific database there is a http:://www.mckoi.com/database

  • JMenu and internationalisation (Locale ?)

    Hello,
    I have some menus that I wish to change based on the selected language
    of the user. I have some text that is in IN18 Latin that should render
    in my JMenu. The problem is that some accented letters of the alphabet are
    not rendering properly. For example "Régions" renders in the menus as
    "Régions".
    My application is a web applet, so the end user has no access to the
    start up of java at all, except for their system locale settings.
    Should I be encoding my translations of menus as HTML(ish) Unicode strings?
    Do I have the wrong Locale setup?
    I did try the following:
    Locale locale = Locale.getDefault();
    Locale.setDefault(Locale.FRANCE);This did nothing to resolve the problem.
    Is there a tutorial that shows the proper way of using international character sets
    transparently without having to start the java application in a special way from the
    command line?
    Thanks for any pointers.
    Peter
    Edited by: pgw on Nov 3, 2008 1:06 PM

    Well, I'm reading data from the database via:
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));Which I just changed to:
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF8"));Now all is well.
    I had tried to convert the actual string, but
    String.getBytes(original, "UTF-8") appeared to be converting the ESC character to UTF ... (??)
    Anyway it didn't work.
    Specifying the format of the InputStreamReader appears to be the way to go.
    Thanks for the leads.

  • FPM Internationalisation

    HI,
    I am working on FPM( OIF ). I have made two main views in that. say view1 and view2.
    Now how can i do the internationalization for the same.
    I have to do the internationalization for the Aplication Title also.

    Hi
    Check this [Link|http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/c069b075-e48f-2c10-66ba-f57442c9076c].
    Regards,
    Surjith

  • Reading Internationalised Bundles Outside of a Jar File

    I have seen this question many times throughout this forum and other forums where a jar file is tryingto load a resource outside of the jar file. The answers are often scattered or partial solutions. This is an attempt to provide a complete solution.
    Step 1)
    In your manifest file add to the Class-Path attribute the current directory, ie . plus any other library files you require (seperated with spaces).
    for example
    Class-Path: . lib/log4j.jar
    Step 2)
    In your code, make sure that you are correctly requesting the resource. If you are requesting a resource from the directory where you are running your jar file from (i.e. the working directory), simply use ResourceBundle.getBundle("Resource"); or equivalent method.
    If you bundle is within a directory, you must specify the directory when getting the Bundle as a dot seperated string, i.e.
    ResourceBundle.getBundle("etc.i18n.Resource"); would look for the file <working-directory)/etc/i18n/Resource.properties.
    I hope this may help people having problems with this excellent tool. Please feel free to add to this tutorial or amend any mistakes I may have made.
    Good Luck
    codemwnci

    I followed the instructions here and had every thing correct. I created the jar with ant using fearly standard build.xml. Things didn't still work out. Spent few hours wondering why things don't work.
    Reason: the property-files were not included in indexing.
    Basically there is two way around:
    1) Add the property files to the index of the jar.
    The problem here is that you cannot have new property-files without creating the index again.
    2) Don't do the indexing for the jar.
    In this case the jar is not so well optimazed, and in some case that may be a little problem.

  • Internationalisation ServletFilter and UTF8 Character-Encoding

    Hello to all
    I use a non common but nice way to internationalize my web-application.
    I use a ServletFilter to replace the text-keys. So static-resources stays static-resources that can be cached and don't need to be translated each time they are requested.
    But there is a little problem to get it working with utf-8.
    In my opinion there is only one way to read the response-content. I have to use a own HttpServletResponseWrapper like recommended under [http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets8.html#82361].
    If I do so it is no more possible to use ServletQutputStream (wrapper.getOutputStream()) to write back the modified/internationalized content (e.g. with german umlauts/Umlaute) back to the response in the right encoding.
    Writer out = new BufferedWriter(new OutputStreamWriter(wrapper.getOutputStream(), "UTF8"));Using PrintWriter for writing does not work. Because umlauts are send in the wrong encoding (iso-8859-1). With the network-sniffer Wireshark I've seen that � comes as FC that means as iso-8859-1 encoded character.
    It obviously uses the plattforms default-encoding although the documentation does not mentions this explictly for the Constructor ([PrintWriter(java.io.Writer,boolean)|http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.Writer,%20boolean)]).
    So my questions:
    1. Is there a way to get response-content without loosing option to call wrapper.getOutputStream().
    or
    2. can I set the encoding for my printwriter
    or
    3. can I encode the content before writing it to the printwriter and will this solve the problem
    new String(Charset.forName("UTF8").encode(content).array(), "UTF8") did not work.
    Here comes my code:
    The Filter to tanslate the resources/response:
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import de.modima.util.lang.Language;
    public class TranslationFilter implements Filter
         private static final Log log = LogFactory.getLog(TranslationFilter.class);
         public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
              String lang = Language.setLanguage((HttpServletRequest) request);
              CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse)response, "UTF8");
              PrintWriter out = response.getWriter();
              chain.doFilter(request, wrapper);
              String content = wrapper.toString();
              content = Language.translateContent(content, lang);
              content += "                                                                                  ";
              wrapper.setContentLength(content.length());
              out.write(content);
              out.flush();
              out.close();
         public void destroy(){}
         public void init(FilterConfig filterconfig) throws ServletException{}
         }The response-wrapper to get acces to the response content:
    import java.io.CharArrayWriter;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    public class CharResponseWrapper extends TypedSevletResponse
         private static final Log log = LogFactory.getLog(CharResponseWrapper.class);
         private CharArrayWriter output;
         public String toString()
              return output.toString();
         public CharResponseWrapper(HttpServletResponse response, String charsetName)
              super(response, charsetName);
              output = new CharArrayWriter();
         public PrintWriter getWriter()
              return new PrintWriter(output, true);
         }The TypedResponse that takes care for setting the right http-header informations according to the given charset:
    import java.nio.charset.Charset;
    import java.util.StringTokenizer;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
    public class TypedSevletResponse extends HttpServletResponseWrapper
         private String type;
         private String charsetName;
          * @param response
          * @param charsetName the java or non-java name of the charset like utf-8
         public TypedSevletResponse(HttpServletResponse response, String charsetName)
              super(response);
              this.charsetName = charsetName;
         public void setContentType(String type)
              if (this.type==null && type!=null)
                   StringTokenizer st=new StringTokenizer(type,";");
                   type=st.hasMoreTokens()?st.nextToken():"text/html";
                   type+="; charset="+getCharset().name();
                   this.type=type;
              getResponse().setContentType(this.type);
       public String getContentType()
          return type;
       public String getCharacterEncoding()
              try
                   return getCharset().name();
              catch (Exception e)
                   return super.getCharacterEncoding();
         protected Charset getCharset()
              return Charset.forName(charsetName);
         }Some informations about the enviroment:
    OS: Linux Debian 2.6.18-5-amd64
    Java: IBMJava2-amd64-142
    Apserver: JBoss 3.2.3
    Regards
    Markus Liebschner
    Edited by: MaLie on 30.04.2008 11:52
    Edited by: MaLie on 30.04.2008 11:54 ... typo
    Edited by: MaLie on 30.04.2008 12:04

    Hello cndvg
    yes I did.
    I found the solution in this forum at [Filter inconsistency Windows-Solaris?|http://forum.java.sun.com/thread.jspa?threadID=520067&messageID=2518948]
    You have to use a own implementation of ServletOutputStream.
    public class TypedServletOutputStream extends ServletOutputStream
         CharArrayWriter buffer;
         public TypedServletOutputStream(CharArrayWriter aCharArrayWriter)
              super();
              buffer = aCharArrayWriter;
         public void write(int aInt)
              buffer.write(aInt);
         }Now the CharResponseWrapper looks like this.
    public class CharResponseWrapper extends TypedSevletResponse
         private static final Log log = LogFactory.getLog(CharResponseWrapper.class);
         private CharArrayWriter output;
         public String toString()
              return output.toString();
         public CharResponseWrapper(HttpServletResponse response, String charsetName)
              super(response, charsetName);
              output = new CharArrayWriter();
         public PrintWriter getWriter() throws IOException
              return new PrintWriter(output,true);
         public ServletOutputStream getOutputStream()
              return new TypedServletOutputStream(output);
         }Regards
    MaLie

  • Streaming CSV via Apache/ Tomcat  with Mod Proxy

    I have Apache hooked up to Tomcat using mod_proxy and attempts to stream a CSV file from a Struts action via tomcat fails.
    Using the tomcat port localhost:8080/testappp the streaming works fine but for some reason it does not work via the apache url
    Build is Red Hat Enterprise Linux AS release 4 on Apache 2.0.52-25 and Tomcat 5.5
    Below are pastes of the apache conf file and tomcat server.xml
    Thanks
    # httpd.conf
    # Based upon the NCSA server configuration files originally by Rob McCool.
    # This is the main Apache server configuration file. It contains the
    # configuration directives that give the server its instructions.
    # See <URL:http://httpd.apache.org/docs-2.0/> for detailed information about
    # the directives.
    # Do NOT simply read the instructions in here without understanding
    # what they do. They're here only as hints or reminders. If you are unsure
    # consult the online docs. You have been warned.
    # The configuration directives are grouped into three basic sections:
    # 1. Directives that control the operation of the Apache server process as a
    # whole (the 'global environment').
    # 2. Directives that define the parameters of the 'main' or 'default' server,
    # which responds to requests that aren't handled by a virtual host.
    # These directives also provide default values for the settings
    # of all virtual hosts.
    # 3. Settings for virtual hosts, which allow Web requests to be sent to
    # different IP addresses or hostnames and have them handled by the
    # same Apache server process.
    # Configuration and logfile names: If the filenames you specify for many
    # of the server's control files begin with "/" (or "drive:/" for Win32), the
    # server will use that explicit path. If the filenames do not begin
    # with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
    # with ServerRoot set to "/etc/httpd" will be interpreted by the
    # server as "/etc/httpd/logs/foo.log".
    ### Section 1: Global Environment
    # The directives in this section affect the overall operation of Apache,
    # such as the number of concurrent requests it can handle or where it
    # can find its configuration files.
    # Don't give away too much information about all the subcomponents
    # we are running. Comment out this line if you don't mind remote sites
    # finding out what major optional modules you are running
    ServerTokens OS
    # ServerRoot: The top of the directory tree under which the server's
    # configuration, error, and log files are kept.
    # NOTE! If you intend to place this on an NFS (or otherwise network)
    # mounted filesystem then please read the LockFile documentation
    # (available at <URL:http://httpd.apache.org/docs-2.0/mod/mpm_common.html#lockfile>);
    # you will save yourself a lot of trouble.
    # Do NOT add a slash at the end of the directory path.
    ServerRoot "/etc/httpd"
    # PidFile: The file in which the server should record its process
    # identification number when it starts.
    PidFile run/httpd.pid
    # Timeout: The number of seconds before receives and sends time out.
    Timeout 120
    # KeepAlive: Whether or not to allow persistent connections (more than
    # one request per connection). Set to "Off" to deactivate.
    KeepAlive Off
    # MaxKeepAliveRequests: The maximum number of requests to allow
    # during a persistent connection. Set to 0 to allow an unlimited amount.
    # We recommend you leave this number high, for maximum performance.
    MaxKeepAliveRequests 100
    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    KeepAliveTimeout 15
    ## Server-Pool Size Regulation (MPM specific)
    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # ServerLimit: maximum value for MaxClients for the lifetime of the server
    # MaxClients: maximum number of server processes allowed to start
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule prefork.c>
    StartServers 8
    MinSpareServers 5
    MaxSpareServers 20
    ServerLimit 256
    MaxClients 256
    MaxRequestsPerChild 4000
    </IfModule>
    # worker MPM
    # StartServers: initial number of server processes to start
    # MaxClients: maximum number of simultaneous client connections
    # MinSpareThreads: minimum number of worker threads which are kept spare
    # MaxSpareThreads: maximum number of worker threads which are kept spare
    # ThreadsPerChild: constant number of worker threads in each server process
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule worker.c>
    StartServers 2
    MaxClients 150
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    </IfModule>
    # Listen: Allows you to bind Apache to specific IP addresses and/or
    # ports, in addition to the default. See also the <VirtualHost>
    # directive.
    # Change this to Listen on specific IP addresses as shown below to
    # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
    #Listen 12.34.56.78:80
    Listen 80
    # Dynamic Shared Object (DSO) Support
    # To be able to use the functionality of a module which was built as a DSO you
    # have to place corresponding `LoadModule' lines at this location so the
    # directives contained in it are actually available before they are used.
    # Statically compiled modules (those listed by `httpd -l') do not need
    # to be loaded here.
    # Example:
    # LoadModule foo_module modules/mod_foo.so
    LoadModule access_module modules/mod_access.so
    LoadModule auth_module modules/mod_auth.so
    LoadModule auth_anon_module modules/mod_auth_anon.so
    LoadModule auth_dbm_module modules/mod_auth_dbm.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule ldap_module modules/mod_ldap.so
    LoadModule auth_ldap_module modules/mod_auth_ldap.so
    LoadModule include_module modules/mod_include.so
    LoadModule log_config_module modules/mod_log_config.so
    LoadModule env_module modules/mod_env.so
    LoadModule mime_magic_module modules/mod_mime_magic.so
    LoadModule cern_meta_module modules/mod_cern_meta.so
    LoadModule expires_module modules/mod_expires.so
    LoadModule deflate_module modules/mod_deflate.so
    LoadModule headers_module modules/mod_headers.so
    LoadModule usertrack_module modules/mod_usertrack.so
    LoadModule setenvif_module modules/mod_setenvif.so
    LoadModule mime_module modules/mod_mime.so
    LoadModule dav_module modules/mod_dav.so
    LoadModule status_module modules/mod_status.so
    LoadModule autoindex_module modules/mod_autoindex.so
    LoadModule asis_module modules/mod_asis.so
    LoadModule info_module modules/mod_info.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    LoadModule negotiation_module modules/mod_negotiation.so
    LoadModule dir_module modules/mod_dir.so
    LoadModule imap_module modules/mod_imap.so
    LoadModule actions_module modules/mod_actions.so
    LoadModule speling_module modules/mod_speling.so
    LoadModule userdir_module modules/mod_userdir.so
    LoadModule alias_module modules/mod_alias.so
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule cache_module modules/mod_cache.so
    LoadModule suexec_module modules/mod_suexec.so
    LoadModule disk_cache_module modules/mod_disk_cache.so
    LoadModule file_cache_module modules/mod_file_cache.so
    LoadModule mem_cache_module modules/mod_mem_cache.so
    LoadModule cgi_module modules/mod_cgi.so
    LoadModule dav_svn_module /usr/lib/httpd/modules/mod_dav_svn.so
    LoadModule authz_svn_module /usr/lib/httpd/modules/mod_authz_svn.so
    # Load config files from the config directory "/etc/httpd/conf.d".
    Include conf.d/*.conf
    # ExtendedStatus controls whether Apache will generate "full" status
    # information (ExtendedStatus On) or just basic information (ExtendedStatus
    # Off) when the "server-status" handler is called. The default is Off.
    #ExtendedStatus On
    ### Section 2: 'Main' server configuration
    # The directives in this section set up the values used by the 'main'
    # server, which responds to any requests that aren't handled by a
    # <VirtualHost> definition. These values also provide defaults for
    # any <VirtualHost> containers you may define later in the file.
    # All of these directives may appear inside <VirtualHost> containers,
    # in which case these default settings will be overridden for the
    # virtual host being defined.
    # If you wish httpd to run as a different user or group, you must run
    # httpd as root initially and it will switch.
    # User/Group: The name (or #number) of the user/group to run httpd as.
    # . On SCO (ODT 3) use "User nouser" and "Group nogroup".
    # . On HPUX you may not be able to use shared memory as nobody, and the
    # suggested workaround is to create a user www and use that user.
    # NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
    # when the value of (unsigned)Group is above 60000;
    # don't use Group #-1 on these systems!
    User apache
    Group apache
    # ServerAdmin: Your address, where problems with the server should be
    # e-mailed. This address appears on some server-generated pages, such
    # as error documents. e.g. [email protected]
    ServerAdmin [Email]root@localhost[Email]
    # ServerName gives the name and port that the server uses to identify itself.
    # This can often be determined automatically, but we recommend you specify
    # it explicitly to prevent problems during startup.
    # If this is not set to valid DNS name for your host, server-generated
    # redirections will not work. See also the UseCanonicalName directive.
    # If your host doesn't have a registered DNS name, enter its IP address here.
    # You will have to access it by its address anyway, and this will make
    # redirections work in a sensible way.
    ServerName ext02:80
    # UseCanonicalName: Determines how Apache constructs self-referencing
    # URLs and the SERVER_NAME and SERVER_PORT variables.
    # When set "Off", Apache will use the Hostname and Port supplied
    # by the client. When set "On", Apache will use the value of the
    # ServerName directive.
    UseCanonicalName Off
    # DocumentRoot: The directory out of which you will serve your
    # documents. By default, all requests are taken from this directory, but
    # symbolic links and aliases may be used to point to other locations.
    DocumentRoot "/var/www/html"
    # Each directory to which Apache has access can be configured with respect
    # to which services and features are allowed and/or disabled in that
    # directory (and its subdirectories).
    # First, we configure the "default" to be a very restrictive set of
    # features.
    <Directory />
    Options FollowSymLinks
    AllowOverride None
    </Directory>
    # Note that from this point forward you must specifically allow
    # particular features to be enabled - so if something's not working as
    # you might expect, make sure that you have specifically enabled it
    # below.
    # This should be changed to whatever you set DocumentRoot to.
    <Directory "/var/www/html">
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    # Note that "MultiViews" must be named explicitly --- "Options All"
    # doesn't give it to you.
    # The Options directive is both complicated and important. Please see
    # http://httpd.apache.org/docs-2.0/mod/core.html#options
    # for more information.
    Options Indexes FollowSymLinks
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    # Options FileInfo AuthConfig Limit
    AllowOverride None
    # Controls who can get stuff from this server.
    Order allow,deny
    Allow from all
    </Directory>
    # UserDir: The name of the directory that is appended onto a user's home
    # directory if a ~user request is received.
    # The path to the end user account 'public_html' directory must be
    # accessible to the webserver userid. This usually means that ~userid
    # must have permissions of 711, ~userid/public_html must have permissions
    # of 755, and documents contained therein must be world-readable.
    # Otherwise, the client will only receive a "403 Forbidden" message.
    # See also: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
    <IfModule mod_userdir.c>
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    UserDir disable
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #UserDir public_html
    </IfModule>
    # Control access to UserDir directories. The following is an example
    # for a site where these directories are restricted to read-only.
    #<Directory /home/*/public_html>
    # AllowOverride FileInfo AuthConfig Limit
    # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    # <Limit GET POST OPTIONS>
    # Order allow,deny
    # Allow from all
    # </Limit>
    # <LimitExcept GET POST OPTIONS>
    # Order deny,allow
    # Deny from all
    # </LimitExcept>
    #</Directory>
    # DirectoryIndex: sets the file that Apache will serve if a directory
    # is requested.
    # The index.html.var file (a type-map) is used to deliver content-
    # negotiated documents. The MultiViews Option can be used for the
    # same purpose, but it is much slower.
    DirectoryIndex index.php index.html index.html.var
    # AccessFileName: The name of the file to look for in each directory
    # for additional configuration directives. See also the AllowOverride
    # directive.
    AccessFileName .htaccess
    # The following lines prevent .htaccess and .htpasswd files from being
    # viewed by Web clients.
    <Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    </Files>
    # TypesConfig describes where the mime.types file (or equivalent) is
    # to be found.
    TypesConfig /etc/mime.types
    # DefaultType is the default MIME type the server will use for a document
    # if it cannot otherwise determine one, such as from filename extensions.
    # If your server contains mostly text or HTML documents, "text/plain" is
    # a good value. If most of your content is binary, such as applications
    # or images, you may want to use "application/octet-stream" instead to
    # keep browsers from trying to display binary files as though they are
    # text.
    DefaultType text/plain
    # The mod_mime_magic module allows the server to use various hints from the
    # contents of the file itself to determine its type. The MIMEMagicFile
    # directive tells the module where the hint definitions are located.
    <IfModule mod_mime_magic.c>
    # MIMEMagicFile /usr/share/magic.mime
    MIMEMagicFile conf/magic
    </IfModule>
    # HostnameLookups: Log the names of clients or just their IP addresses
    # e.g., www.apache.org (on) or 204.62.129.132 (off).
    # The default is off because it'd be overall better for the net if people
    # had to knowingly turn this feature on, since enabling it means that
    # each client request will result in AT LEAST one lookup request to the
    # nameserver.
    HostnameLookups Off
    # EnableMMAP: Control whether memory-mapping is used to deliver
    # files (assuming that the underlying OS supports it).
    # The default is on; turn this off if you serve from NFS-mounted
    # filesystems. On some systems, turning it off (regardless of
    # filesystem) can improve performance; for details, please see
    # http://httpd.apache.org/docs-2.0/mod/core.html#enablemmap
    #EnableMMAP off
    # EnableSendfile: Control whether the sendfile kernel support is
    # used to deliver files (assuming that the OS supports it).
    # The default is on; turn this off if you serve from NFS-mounted
    # filesystems. Please see
    # http://httpd.apache.org/docs-2.0/mod/core.html#enablesendfile
    #EnableSendfile off
    # ErrorLog: The location of the error log file.
    # If you do not specify an ErrorLog directive within a <VirtualHost>
    # container, error messages relating to that virtual host will be
    # logged here. If you do define an error logfile for a <VirtualHost>
    # container, that host's errors will be logged there and not here.
    ErrorLog logs/error_log
    # LogLevel: Control the number of messages logged to the error_log.
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here. Contrariwise, if you do
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and not in this file.
    #CustomLog logs/access_log common
    # If you would like to have agent and referer logfiles, uncomment the
    # following directives.
    #CustomLog logs/referer_log referer
    #CustomLog logs/agent_log agent
    # For a single logfile with access, agent, and referer information
    # (Combined Logfile Format), use the following directive:
    CustomLog logs/access_log combined
    # Optionally add a line containing the server version and virtual host
    # name to server-generated pages (internal error documents, FTP directory
    # listings, mod_status and mod_info output etc., but not CGI generated
    # documents or custom error documents).
    # Set to "EMail" to also include a mailto: link to the ServerAdmin.
    # Set to one of: On | Off | EMail
    ServerSignature On
    # Aliases: Add here as many aliases as you need (with no limit). The format is
    # Alias fakename realname
    # Note that if you include a trailing / on fakename then the server will
    # require it to be present in the URL. So "/icons" isn't aliased in this
    # example, only "/icons/". If the fakename is slash-terminated, then the
    # realname must also be slash terminated, and if the fakename omits the
    # trailing slash, the realname must also omit it.
    # We include the /icons/ alias for FancyIndexed directory listings. If you
    # do not use FancyIndexing, you may comment this out.
    Alias /icons/ "/var/www/icons/"
    Alias /admin "/home/boss4/web/geoland/admin/"
    Alias /bboard "/home/boss4/web/phpBB3/"
    <Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    <Directory "/home/boss4/web/geoland/admin">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    <Directory "/home/boss4/web/phpBB3">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    # WebDAV module configuration section.
    <IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
    </IfModule>
    # ScriptAlias: This controls which directories contain server scripts.
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the realname directory are treated as applications and
    # run by the server when requested rather than as documents sent to the client.
    # The same rules about trailing "/" apply to ScriptAlias directives as to
    # Alias.
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    </Directory>
    # Redirect allows you to tell clients about documents which used to exist in
    # your server's namespace, but do not anymore. This allows you to tell the
    # clients where to look for the relocated document.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar
    # Directives controlling the display of server-generated directory listings.
    # IndexOptions: Controls the appearance of server-generated directory
    # listings.
    IndexOptions FancyIndexing VersionSort NameWidth=*
    # AddIcon* directives tell the server which icon to show for different
    # files or filename extensions. These are only displayed for
    # FancyIndexed directories.
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    # DefaultIcon is which icon to show for files which do not have an icon
    # explicitly set.
    DefaultIcon /icons/unknown.gif
    # AddDescription allows you to place a short description after a file in
    # server-generated indexes. These are only displayed for FancyIndexed
    # directories.
    # Format: AddDescription "description" filename
    #AddDescription "GZIP compressed document" .gz
    #AddDescription "tar archive" .tar
    #AddDescription "GZIP compressed tar archive" .tgz
    # ReadmeName is the name of the README file the server will look for by
    # default, and append to directory listings.
    # HeaderName is the name of a file which should be prepended to
    # directory indexes.
    ReadmeName README.html
    HeaderName HEADER.html
    # IndexIgnore is a set of filenames which directory indexing should ignore
    # and not include in the listing. Shell-style wildcarding is permitted.
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
    # DefaultLanguage and AddLanguage allows you to specify the language of
    # a document. You can then use content negotiation to give a browser a
    # file in a language the user can understand.
    # Specify a default language. This means that all data
    # going out without a specific language tag (see below) will
    # be marked with this one. You probably do NOT want to set
    # this unless you are sure it is correct for all cases.
    # * It is generally better to not mark a page as
    # * being a certain language than marking it with the wrong
    # * language!
    # DefaultLanguage nl
    # Note 1: The suffix does not have to be the same as the language
    # keyword --- those with documents in Polish (whose net-standard
    # language code is pl) may wish to use "AddLanguage pl .po" to
    # avoid the ambiguity with the common suffix for perl scripts.
    # Note 2: The example entries below illustrate that in some cases
    # the two character 'Language' abbreviation is not identical to
    # the two character 'Country' code for its country,
    # E.g. 'Danmark/dk' versus 'Danish/da'.
    # Note 3: In the case of 'ltz' we violate the RFC by using a three char
    # specifier. There is 'work in progress' to fix this and get
    # the reference data for rfc1766 cleaned up.
    # Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl)
    # English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
    # Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
    # Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
    # Norwegian (no) - Polish (pl) - Portugese (pt)
    # Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
    # Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
    AddLanguage ca .ca
    AddLanguage cs .cz .cs
    AddLanguage da .dk
    AddLanguage de .de
    AddLanguage el .el
    AddLanguage en .en
    AddLanguage eo .eo
    AddLanguage es .es
    AddLanguage et .et
    AddLanguage fr .fr
    AddLanguage he .he
    AddLanguage hr .hr
    AddLanguage it .it
    AddLanguage ja .ja
    AddLanguage ko .ko
    AddLanguage ltz .ltz
    AddLanguage nl .nl
    AddLanguage nn .nn
    AddLanguage no .no
    AddLanguage pl .po
    AddLanguage pt .pt
    AddLanguage pt-BR .pt-br
    AddLanguage ru .ru
    AddLanguage sv .sv
    AddLanguage zh-CN .zh-cn
    AddLanguage zh-TW .zh-tw
    # LanguagePriority allows you to give precedence to some languages
    # in case of a tie during content negotiation.
    # Just list the languages in decreasing order of preference. We have
    # more or less alphabetized them here. You probably want to change this.
    LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
    # ForceLanguagePriority allows you to serve a result page rather than
    # MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
    # [in case no accepted languages matched the available variants]
    ForceLanguagePriority Prefer Fallback
    # Specify a default charset for all pages sent out. This is
    # always a good idea and opens the door for future internationalisation
    # of your web site, should you ever want it. Specifying it as
    # a default does little harm; as the standard dictates that a page
    # is in iso-8859-1 (latin1) unless specified otherwise i.e. you
    # are merely stating the obvious. There are also some security
    # reasons in browsers, related to javascript and URL parsing
    # which encourage you to always set a default char set.
    AddDefaultCharset UTF-8
    # Commonly used filename extensions to character sets. You probably
    # want to avoid clashes with the language extensions, unless you
    # are good at carefully testing your setup after each change.
    # See http://www.iana.org/assignments/character-sets for the
    # official list of charset names and their respective RFCs.
    AddCharset ISO-8859-1 .iso8859-1 .latin1
    AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
    AddCharset ISO-8859-3 .iso8859-3 .latin3
    AddCharset ISO-8859-4 .iso8859-4 .latin4
    AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
    AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
    AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
    AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
    AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
    AddCharset ISO-2022-JP .iso2022-jp .jis
    AddCharset ISO-2022-KR .iso2022-kr .kis
    AddCharset ISO-2022-CN .iso2022-cn .cis
    AddCharset Big5 .Big5 .big5
    # For russian, more than one charset is used (depends on client, mostly):
    AddCharset WINDOWS-1251 .cp-1251 .win-1251
    AddCharset CP866 .cp866
    AddCharset KOI8-r .koi8-r .koi8-ru
    AddCharset KOI8-ru .koi8-uk .ua
    AddCharset ISO-10646-UCS-2 .ucs2
    AddCharset ISO-10646-UCS-4 .ucs4
    AddCharset UTF-8 .utf8
    # The set below does not map to a specific (iso) standard
    # but works on a fairly wide range of browsers. Note that
    # capitalization actually matters (it should not, but it
    # does for some browsers).
    # See http://www.iana.org/assignments/character-sets
    # for a list of sorts. But browsers support few.
    AddCharset GB2312 .gb2312 .gb
    AddCharset utf-7 .utf7
    AddCharset utf-8 .utf8
    AddCharset big5 .big5 .b5
    AddCharset EUC-TW .euc-tw
    AddCharset EUC-JP .euc-jp
    AddCharset EUC-KR .euc-kr
    AddCharset shift_jis .sjis
    # AddType allows you to add to or override the MIME configuration
    # file mime.types for specific file types.
    #AddType application/x-tar .tgz
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    # Despite the name similarity, the following Add* directives have nothing
    # to do with the FancyIndexing customization directives above.
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #AddHandler cgi-script .cgi
    # For files that include their own HTTP headers:
    #AddHandler send-as-is asis
    # For server-parsed imagemap files:
    AddHandler imap-file map
    # For type maps (negotiated resources):
    # (This is enabled by default to allow the Apache "It Worked" page
    # to be distributed in multiple languages.)
    AddHandler type-map var
    # Filters allow you to process content before it is sent to the client.
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    # Action lets you define media types that will execute a script whenever
    # a matching file is called. This eliminates the need for repeated URL
    # pathnames for oft-used CGI file processors.
    # Format: Action media/type /cgi-script/location
    # Format: Action handler-name /cgi-script/location
    # Customizable error responses come in three flavors:
    # 1) plain text 2) local redirects 3) external redirects
    # Some examples:
    #ErrorDocument 500 "The server made a boo boo."
    #ErrorDocument 404 /missing.html
    #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
    #ErrorDocument 402 http://www.example.com/subscription_info.html
    # Putting this all together, we can internationalize error responses.
    # We use Alias to redirect any /error/HTTP_<error>.html.var response to
    # our collection of by-error message multi-language collections. We use
    # includes to substitute the appropriate text.
    # You can modify the messages' appearance without changing any of the
    # default HTTP_<error>.html.var files by adding the line:
    # Alias /error/include/ "/your/include/path/"

    Please note: I AM USING:
    JkOptions ForwardKeySize ForwardURICompat -ForwardDirectories
    And that's what's supposed to fix this problem in the first place, right??

  • Multiboot does not work

    I have installed multiboot(arch linux x86_64)
    http://aur.archlinux.org/packages.php?ID=33187&detail=1
    but it doesn't start.
    if I start, it shows
    $multisystem
    Error: USER:<name> is not admin!
    I tried adding <name> to adm group by:
    $usermod -a -G adm <name>
    and it was successful
    but the error still comes
    $multisystem
    Error: USER:<name> is not admin!
    I also tried to edit gui_multisystem.sh following the instructions given in the link above and now it looks like this:
    (But it didn't work) How can I make multiboot work
    #! /bin/bash --posix
    chemin="$(cd "$(dirname "$0")";pwd)/$(basename "$0")";
    dossier="$(dirname "$chemin")"
    export chemin dossier
    cd "${dossier}"
    ###Pour exporter la librairie de gettext.
    set -a
    source gettext.sh
    set +a
    export TEXTDOMAIN=multisystem
    export TEXTDOMAINDIR=${dossier}/locale
    . gettext.sh
    multisystem=$0
    #stop si root!
    if [ "$(id -u)" -ne "0"]; then
    zenity --error --text "$(eval_gettext "Erreur: pas en root!")"
    nohup "$dossier"/kill.sh&
    exit 0
    fi
    #gtkrc perso
    #bonne adresse pour les styles gtkrc ==> http://orford.org/gtk/
    # Example pour modifier style des boutons nommés stylebt
    #style "styleBorderless" {
    # GtkButton::inner-border = {10, 0, 0, 10}
    # xthickness = 0
    # ythickness = 0
    #widget "*stylebt" style "styleBorderless"
    #Exemple pour changer police d'un widget nommé GtkEditFontMonospace
    #style "styleGtkEditFontMonospace" {
    # text[NORMAL] = "#ffffff"
    # base[NORMAL] = "#000000"
    # font_name = "monospace 16"
    #widget "*GtkEditFontMonospace" style "styleGtkEditFontMonospace"
    if [ -f "$HOME/.multisystem/gtkrc" ]; then
    export GTK2_RC_FILES=$HOME/.multisystem/gtkrc:~/.gtkrc-2.0
    fi
    #Test les path et ajout à .profile de user si path existe et non present dans $PATH
    #pour fonctionnement de which en user non sudo sur les bases Debian
    function FCT_CHECKPATH()
    [ ! -f "$HOME/.profile" ] && >"$HOME/.profile"
    . $HOME/.profile
    export PATH=$PATH
    path_curents="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    path_actuels="$(echo $PATH | tr ":" "\n")"
    path_add=""
    I=$IFS; IFS=":"
    for test_path in $path_curents; do
    if [[ ! "$(grep "^${test_path}$" <<<"${path_actuels}")" ]]; then
    path_add="${path_add}${test_path}:"
    echo Ajouter PATH: ${test_path}
    fi
    done
    IFS=$I
    if [ "${path_add}" ]; then
    echo "PATH=\"${path_add}\$PATH\"" | tee -a "$HOME/.profile"
    export PATH="${path_add}$PATH"
    fi
    FCT_CHECKPATH
    #Path gtkdialog
    GTKDIALOG=gtkdialog
    export GTKDIALOG
    #Check version gtkdialog
    function funcGTKDVGet() {
    GTKVMINI="0.8.0"
    GTKDV=( $($GTKDIALOG -v) )
    GTKDV=${GTKDV[2]}
    echo "Gtkdialog version: $GTKDV"
    if [[ $GTKDV < $GTKVMINI ]]; then
    GTKVADV="This application requires at least gtkdialog-$GTKVMINI,\nPlease updrade your version.\nWebsite: http://code.google.com/p/gtkdialog/"
    echo -e "\033[1;47;31m $GTKVADV \033[0m"
    zenity --info --text "$GTKVADV"&
    exit 0
    fi
    funcGTKDVGet
    #Créer dossier pref
    if [ ! -d "$HOME/.multisystem/" ]; then
    mkdir "$HOME/.multisystem/" 2>/dev/null
    fi
    #Mettre à jour les icones GTK ! à revoir ...
    #http://developer.gimp.org/api/2.0/gtk/gtk-update-icon-cache.html
    #gtk-update-icon-cache -t "$HOME"/.local/share/icons/hicolor/
    #manque ==> index.theme voir ==> /usr/share/icons/hicolor/index.theme
    #Caler lang si user n'a pas réglé dans gui de multisystem
    if [ ! -f "$HOME/.multisystem/lang_sel.txt" ]; then
    echo
    >"$HOME/.multisystem/lang_sel.txt"
    while read line
    do
    if [ "$(grep -i "$(echo $line | awk -F'|' '{print $3}'| sed "s/\..*//")" <<<"${LANG}")" ]; then
    echo $line | awk -F'|' '{print $3}'| sed "s/\..*//"
    echo $line >"$HOME/.multisystem/lang_sel.txt"
    break
    fi
    done <<<"$(cat "${dossier}/lang_list.txt" | sed "/^$/d")"
    #Si ne trouve pas de traduction passer en Anglais.
    if [ ! "$(cat "$HOME/.multisystem/lang_sel.txt")" ]; then
    echo "English|en|en_US.UTF-8" >"$HOME/.multisystem/lang_sel.txt"
    fi
    cat "$HOME/.multisystem/lang_sel.txt"
    fi
    #pour slitaz
    if [ "$(which tazpkg 2>/dev/null)" ]; then
    export LANG="$(awk -F\| '{print $3}' "$HOME/.multisystem/lang_sel.txt")"
    else
    declare -x LANGUAGE="$(awk -F\| '{print $3}' "$HOME/.multisystem/lang_sel.txt")"
    fi
    echo LANG:$LANG
    echo LANGUAGE:$LANGUAGE
    echo LANGSEL:$(cat "$HOME/.multisystem/lang_sel.txt")
    #zenity --info --text "$(export)"
    #locale -a
    #cat /etc/default/locale
    #/etc/environment or ~/.gtkrc
    #sudo locale-gen --purge fr_FR.UTF-8
    #locale-gen
    #dpkg-reconfigure locales
    #dpkg-reconfigure console-data
    #dpkg-reconfigure console-setup
    #id
    #if [ ! "$(ps ax | grep -v grep | grep "hal-lock --interface org.freedesktop.Hal.Device.Volume --exclusive --run ${chemin}")" ]; then
    #hal-lock --interface org.freedesktop.Hal.Device.Volume --exclusive --run "${chemin}"
    #exit 0
    #fi
    #Thème
    . ./theme.sh
    #Gui logo
    # font-family=\"purisa\" weight=\"bold\"
    if [ "$(grep "fr_FR" <<<"${LANG}")" ]; then
    export MOD_WAIT='<window title="MultiSystem-logo" window_position="1" decorated="false">
    <vbox>
    <text sensitive="false" use-markup="true" wrap="false" angle="10">
    <variable>MESSAGES</variable>
    <input>echo "\<b>\<span color=\"#EB2C00\" size=\"larger\">○ NOUVEAU !\nLa première clé USB MultiSystem du marché\nest disponible sur liveusb.info.\</span>\</b>" | sed "s%\\\%%g" | sed "s%\\\\n\\\\n\\\\n%%g"</input>
    </text>
    <pixmap>
    <input file>./logo_pub.jpg</input>
    </pixmap>
    <pixmap>
    <input file>./pixmaps/multisystem-wait.gif</input>
    </pixmap>
    </vbox>
    </window>'
    else
    export MOD_WAIT='<window title="MultiSystem-logo" window_position="1" decorated="false">
    <vbox>
    <pixmap>
    <input file>./logo.png</input>
    </pixmap>
    <pixmap>
    <input file>./pixmaps/multisystem-wait.gif</input>
    </pixmap>
    </vbox>
    </window>'
    fi
    #Lancer logo
    gtkdialog --program=MOD_WAIT &
    sleep .5
    function FCT_DETECT_PROCESS()
    #detect process
    #zenity --info --text "$(pgrep -xlc multisystem) $(pgrep -xlc gui_multisystem)"
    if [[ "$(pgrep -xlc multisystem)" -gt "1" || "$(pgrep -xlc gui_multisystem)" -gt "1" ]]; then
    wmctrl -c "MultiSystem-logo"
    #Activer fenetre
    xdotool windowactivate $(wmctrl -l | grep 'MultiSystem' | awk '{print $1}')
    exit 0
    fi
    FCT_DETECT_PROCESS
    #Verif dépendances...
    errorlist=()
    for i in $(grep -v "^#" <<<"${testlist}" | xargs)
    do
    if [ ! "$(which $i 2>/dev/null)" ]; then
    errorlist=(${errorlist[@]} $i)
    fi
    done
    #Stop si
    if [ "$(echo "${errorlist[@]}")" ]; then
    echo -e "\033[1;47;31m $(eval_gettext 'Erreur il manque: ')${errorlist[@]} \033[0m"
    cat /etc/group | grep ^users | grep $USER
    exit 0
    fi
    #dpkg -L grub-pc
    #mettre en place les icon pour lancement si pas installé!
    mkdir -p "$HOME"/.local/share/icons/hicolor/48x48/apps/ 2>/dev/null
    #comparer nombre icon et maj si diff
    if [ "$?" -eq 0; then
    cp -f "${dossier}/pixmaps/"* "$HOME"/.local/share/icons/hicolor/48x48/apps/
    fi
    #Vérifier que GParted n'est pas open!
    if [ "$(ps aux | grep -v grep | grep 'hal-lock.*interface org.freedesktop.Hal.Device.Storage.*exclusive')" ]; then
    zenity --error --text "$(eval_gettext "Erreur: un logiciel bloque l\'utilisation des disques, veuillez le fermer.")"
    nohup "$dossier"/kill.sh&
    exit 0
    fi
    #Vérifier que user est bien administrateur
    if [ "$(cat /etc/group | grep ^users)" ]; then
    echo
    if [ ! "$(cat /etc/group | grep ^users | grep $USER)" ]; then
    zenity --error --text "$(eval_gettext "Erreur:") USER:$USER is not admin!"
    nohup "$dossier"/kill.sh&
    exit 0
    fi
    fi
    #Fermer logo
    #zenity --info --text "logo3"
    #wmctrl -c "MultiSystem-logo"
    #Système de détection
    source ./gui-detect.sh
    sleep .1
    #Thème (laisser en doublon ici !)
    . ./theme.sh
    #mettre en place autorun.inf/multisystem.bat/icon.ico
    if [ ! -f "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/autorun.inf" ]; then
    #echo -e '[AutoRun]\r\nShellexecute=multisystem.bat\r\nICON=icon.ico\r\nLabel=MultiSystem' | tee "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/autorun.inf"
    echo -e '[AutoRun]\r\nICON=icon.ico\r\nLabel=MultiSystem\r\n\r\n[Content]\r\nMusicFiles=false\r\nPictureFiles=false\r\nVideoFiles=false' | tee "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/autorun.inf"
    #copier .ico
    cp -f "${dossier}/icon.ico" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/icon.ico"
    fi
    #par securité verifier multisystem.bat
    #7295356a95fc3e312ec342f57b944662 .../multisystem.bat
    #if [ "7295356a95fc3e312ec342f57b944662" != "$(md5sum "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem.bat" | awk '{print $1}')" ]; then
    #zenity --info --text "$(eval_gettext "ATTENTION!\nle fichier multisystem.bat à été modifié, Virus?")"
    #fi
    #Vérifier les mise à jour! / uniquement si installé!
    if [[ "${dossier}" == "/usr/local/share/multisystem" && "$(cat "$HOME/.multisystem/checkupdate")" = "true" ]]; then
    wget -t1 -T1 http://liveusb.info/multisystem/version-multisystem.txt -O "/tmp/multisystem/version-multisystem.txt"
    if [ "$(cat /tmp/multisystem/version-multisystem.txt 2>/dev/null)" ]; then
    echo ok
    if [ "$(cat /tmp/multisystem/version-multisystem.txt)" != "$(cat /usr/local/share/multisystem/version-multisystem.txt)" ]; then
    zenity --info --text "$(eval_gettext "Une mise à jour de multisystem est disponible")"&
    fi
    fi
    fi
    #Avertissement si user supprime OS dans gui de multisystem
    [ ! "$(cat "$HOME/.multisystem/check_rem" 2>/dev/null)" ] && echo "true" >"$HOME/.multisystem/check_rem"
    check_rem="$(cat "$HOME/.multisystem/check_rem")"
    #Activer icon dans menu gnome
    if [ "$(gconftool-2 --get "/desktop/gnome/interface/menus_have_icons" 2>/dev/null)" = "false" ]; then
    echo
    if [ ! -f "$HOME/.multisystem/active_icon" ]; then
    zenity --question --text="$(eval_gettext "Activer les icones dans les menus de gnome ?")"
    if [ $? = "0" ]; then
    echo ok >"$HOME/.multisystem/active_icon"
    gconftool-2 --set "/desktop/gnome/interface/menus_have_icons" --type bool "true"
    fi
    fi
    fi
    #mettre à jour le menu du tree
    #relever icone|iso|date
    gtkdialog --program=MOD_WAIT &
    sleep .1
    ./fonctions.sh
    #wmctrl -c "MultiSystem-logo"
    #Corriger bug 1.96 de mon grub.cfg
    if [ "$(grub-install -v | grep 1.96)" ]; then
    sed -i "s/linux16/linux/g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    sed -i "s/initrd16/initrd/g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    sed -i "s/--config-file=\/boot\/grub\/menu.lst//g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    sed -i "s/(\${root})//g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    sed -i "s/^set root=${root}/#set root=${root}/g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    sed -i "s/\#set root=(hd0,1)/set root=(hd0,1)/g" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/boot/grub/grub.cfg"
    fi
    #Onglet À propos
    >/tmp/multisystem/multisystem-about
    while read line
    do
    echo "multisystem-$(echo ${line} | awk -F'|' '{print $2}')|$(eval_gettext 'Traducteur') $(echo ${line} | awk -F'|' '{print $1}'), $(echo ${line} | awk -F'|' '{print $4}')|$(echo ${line} | awk -F'|' '{print $5}')" >>/tmp/multisystem/multisystem-about
    done <<<"$(cat "${dossier}/lang_list.txt" | sed "/^$/d")"
    #check .deb
    verify_update="$(dpkg -l "multisystem" | grep "^ii multisystem" 2>/dev/null | awk '{print $3}')"
    #Si .deb est installé
    if [ "${verify_update}" ]; then
    echo "<span color='"'#4CB23F'"'>Version:${verify_update} $(cat ./version-multisystem.txt)</span>" >/tmp/multisystem/multisystem-inputversion
    #Si .deb n'est pas installé
    elif [ ! "${verify_update}" ]; then
    echo "<span color='"'#4CB23F'"'>Version:$(cat ./version-multisystem.txt)</span>" >/tmp/multisystem/multisystem-inputversion
    fi
    #Onglet Non-Libre
    #Créer dossier nonfree
    mkdir -p "$HOME"/.multisystem/nonfree 2>/dev/null
    #Check les files
    >/tmp/multisystem/multisystem-nonfree
    if [ -f "$HOME"/.multisystem/nonfree/plpbt.bin ]; then
    echo 'gtk-ok|plpbt.bin' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|plpbt.bin' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/plpcfgbt ]; then
    echo 'gtk-ok|plpcfgbt' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|plpcfgbt' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/NTDETECT.COM ]; then
    echo 'gtk-ok|NTDETECT.COM' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|NTDETECT.COM' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/SETUPLDR.BIN ]; then
    echo 'gtk-ok|SETUPLDR.BIN' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|SETUPLDR.BIN' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/RAMDISK.SY_ ]; then
    echo 'gtk-ok|RAMDISK.SY_' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|RAMDISK.SY_' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/RAMDISK.SYS ]; then
    echo 'gtk-ok|RAMDISK.SYS' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|RAMDISK.SYS' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/BOOTSECT.BIN ]; then
    echo 'gtk-ok|BOOTSECT.BIN' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|BOOTSECT.BIN' >>/tmp/multisystem/multisystem-nonfree
    fi
    if [ -f "$HOME"/.multisystem/nonfree/firadisk.ima ]; then
    echo 'gtk-ok|firadisk.ima' >>/tmp/multisystem/multisystem-nonfree
    else
    echo 'gtk-no|firadisk.ima' >>/tmp/multisystem/multisystem-nonfree
    fi
    #Détreminer éditeur text
    if [ "$(which nautilus)" ]; then
    navuse="nautilus"
    elif [ "$(which dolphin)" ]; then
    navuse="dolphin"
    elif [ "$(which rox-filer)" ]; then
    navuse="rox-filer"
    elif [ "$(which thunar)" ]; then
    navuse="thunar"
    elif [ "$(which pcmanfm)" ]; then
    navuse="pcmanfm"
    fi
    #forcer à true par defaut
    echo 'true' >/tmp/multisystem/multisystem-update-bootloader
    #Onglet par defaut
    echo 0 >/tmp/multisystem/multisystem-inputtab1
    echo 0 >/tmp/multisystem/multisystem-inputtab2
    echo 0 >/tmp/multisystem/multisystem-inputtab3
    #Bas de pages commun des onglets secondaires
    function FCT_HOME()
    echo '<pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox spacing="0">
    <button name="stylebt" height_request="30" image-position="0" relief="2" xalign="0" yalign="0">
    <height>16</height>
    <input file icon="multisystem-home"></input>
    <label>'$(eval_gettext 'Retour Accueil')'</label>
    <action>echo 0 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 0 > /tmp/multisystem/multisystem-inputtab2</action>
    <action>refresh:tab1</action>
    <action>refresh:tab2</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" height_request="30" image-position="0" relief="2" xalign="0" yalign="0">
    <height>16</height>
    <input file stock="gtk-quit"></input>
    <label>'$(eval_gettext 'Quitter')'</label>
    <action>wmctrl -c "MultiSystem-logo"</action>
    <action>wmctrl -c "MultiSystem-logo2"</action>
    <action>wmctrl -c "VBox"</action>
    <action>exit:exit</action>
    </button>
    </hbox>'
    #Onglet lister_lang
    function FCT_lister_lang()
    cat "$HOME/.multisystem/lang_sel.txt" | awk -F'|' '{print $1}'
    cat "${dossier}/lang_list.txt" | sed "/^$/d" | awk -F'|' '{print $1}'
    export -f FCT_lister_lang
    export texte_annonce="MultiSystem recherche des traducteurs,\nMerci de nous contacter\nsi vous souhaitez participer\nContact:[email protected]\n\nMultiSystem looking for translators,\nThank you contact us\nif you want to participate\nContact:[email protected]"
    #Onglet Télécharger des LiveCD
    echo All | tee /tmp/multisystem/multisystem-output-list
    function FCT_download_livecd()
    listcat="$(cat /tmp/multisystem/multisystem-output-list 2>/dev/null)"
    #Audio Utility Antivirus Gamer
    if [ "$(grep -E "(Audio)|(Utility)|(Antivirus)|(Gamer)" <<<"${listcat}" 2>/dev/null)" ]; then
    cat "${dossier}/list.txt" | sed "/^#/d" | sed "/^$/d" | grep -E "\|${listcat}\|"
    elif [ "${listcat}" = "All" ]; then
    cat "${dossier}/list.txt" | grep -v "^#" | sed "/^$/d"
    elif [ "${listcat}" = "clear" ]; then
    echo "||||"
    elif [ "${listcat}" ]; then
    cat "${dossier}/list.txt" | sed "/^#/d" | sed "/^$/d" | grep -iE "\|.*${listcat}.*\|.*\|.*\|"
    fi
    export -f FCT_download_livecd
    #Onglet Mise à jour
    function FCT_update()
    $radio1 && xdg-open 'http://liveusb.info/dotclear/index.php?pages/Soutien'&
    if [ "$radio3" == "true" ]; then
    nohup ./update-sel.sh &
    #maj partielle
    elif [ "$radio4" == "true" ]; then
    wget -nd http://liveusb.info/multisystem/os_support.sh -O /tmp/multisystem/os_support.sh 2>&1 \
    | sed -u 's/\([ 0-9]\+K\)[ \.]*\([0-9]\+%\) \(.*\)/\2\n#Transfert : \1 (\2) à \3/' \
    | zenity --progress --auto-kill --auto-close --width 400 --title "$(eval_gettext 'Téléchargement en cours...')"
    if [ "$(diff /tmp/multisystem/os_support.sh ${dossier}/os_support.sh 2>/dev/null)" ]; then
    #Remplacer...
    echo
    if [ "$(du -h "/tmp/multisystem/os_support.sh" 2>/dev/null | awk '{print $1}')" == "0" ]; then
    zenity --error --text "$(eval_gettext 'Erreur de téléchargement')"
    elif [ "$(grep FCT_RELOAD /tmp/multisystem/os_support.sh 2>/dev/null)" ]; then
    cp -f /tmp/multisystem/os_support.sh "${dossier}/os_support.sh"
    fi
    else
    zenity --info --title MultiSystem_Information --text="$(eval_gettext "Pas de mise à jour disponible,\nVous utilisez bien la dernière version du script.")"
    fi
    #Relancer gui
    nohup "${dossier}/gui_multisystem.sh" &
    sleep 1
    exit 0
    fi
    export -f FCT_update
    #Onglet Déboguer
    echo "" >/tmp/multisystem/multisystem-test-usb
    export message_debug="$(eval_gettext "Patience test en cours...")"
    #test écriture sur disque
    function FCT_debug_write()
    #espace dispo dans clé usb
    available="$(($(df -aB 1 $(cat /tmp/multisystem/multisystem-mountpoint-usb) | grep ^$(cat /tmp/multisystem/multisystem-selection-usb) | awk '{print $4}')/1024/1024))"
    if [ "${available}" -lt "1024" ]; then
    message_debug="$(eval_gettext "Erreur: pas suffisament de place libre pour effectuer ce test,") ${available} < 1024Mio"
    echo "${message_debug}" >/tmp/multisystem/multisystem-test-usb
    exit 0
    fi
    echo -e "\E[37;44m\033[1m ${message_debug} \033[0m"
    dd if=/dev/zero bs=1024 count=1000000 of="$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem-1Gb.file"
    rm "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem-1Gb.file"
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Attente, appuyez sur enter pour continuer.') \033[0m"
    read
    echo "" >/tmp/multisystem/multisystem-test-usb
    #test lecture
    function FCT_debug_read()
    #dd if=/dev/zero bs=1024 count=1000000 of="$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem-1Gb.file" >dev/null
    #dd if="$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem-1Gb.file" bs=64k | dd of=/dev/null
    #rm "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/multisystem-1Gb.file"
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m"
    sudo hdparm -Tt $(cat /tmp/multisystem/multisystem-selection-usb)
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Attente, appuyez sur enter pour continuer.') \033[0m"
    read
    #reparer
    function FCT_debug_repair()
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m"
    #redimensionner
    sudo umount -f $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')1 2>/dev/null
    sleep 2
    sudo dosfsck -r -w -v $(cat /tmp/multisystem/multisystem-selection-usb)
    calc_fatresize="$(sudo fatresize -i $(cat /tmp/multisystem/multisystem-selection-usb) -q | grep '^Max size' | awk '{print $3}')"
    echo calc_fatresize:${calc_fatresize} $((${calc_fatresize}/1000/1000))M
    sudo fatresize -p -s $((${calc_fatresize}/1000/1000))M $(cat /tmp/multisystem/multisystem-selection-usb)
    gvfs-mount -d $(cat /tmp/multisystem/multisystem-selection-usb) 2>/dev/null
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Attente, appuyez sur enter pour continuer.') \033[0m"
    read
    export -f FCT_debug_write FCT_debug_read FCT_debug_repair
    #Onglet N°5 Formater votre clé USB
    export format_text="$(parted -s $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//') unit MB print)"
    echo -e "${format_text}" >/tmp/multisystem/multisystem-format-text
    function FCT_format()
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m"
    sudo echo
    #Démonter
    sudo umount -f $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')1 2>/dev/null
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m"
    #shred - Écrire par dessus un fichier pour en camoufler le contenu, et optionnellement l’effacer
    #shred -n 1 -z -v $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')
    dd if=/dev/zero of=$(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//') bs=512 count=1
    sudo parted -a cylinder -s $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//') mklabel msdos
    sudo parted -a cylinder -s $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//') unit MB mkpart primary fat32 1 100%
    sleep 2
    sudo umount -f $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')1 2>/dev/null
    sudo mkdosfs -F32 -v -S512 -n multisystem $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')1
    sleep 2
    sudo parted -s $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//') set 1 boot on
    #Vérifier/Réparer fat32
    #sudo dosfsck -t -a -r -v $(cat /tmp/multisystem/multisystem-selection-usb)
    sudo dosfsck -p -a -w -v $(cat /tmp/multisystem/multisystem-selection-usb)
    sleep 2
    sudo umount $(cat /tmp/multisystem/multisystem-selection-usb | sed 's/[0-9]//')1 2>/dev/null
    calc_fatresize="$(sudo fatresize -i $(cat /tmp/multisystem/multisystem-selection-usb) | grep '^Max size' | awk '{print $3}')"
    #redimensionner
    sudo fatresize -p -s ${calc_fatresize} $(cat /tmp/multisystem/multisystem-selection-usb)
    echo -e "\E[37;44m\033[1m $(eval_gettext 'Formatage effectué,\nveuillez débrancher/rebrancher votre clé USB\navant de relancer multisystem.') \033[0m"
    read
    exit 0
    export -f FCT_format
    #Onglet N°6 Afficher/Masquer des fichiers/dossiers dans votre clé usb
    function FCT_hidden_update_tree()
    #Mettre en forme pour le tree
    >/tmp/multisystem/multisystem-hidden
    echo -e "$(stat -c %n "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/"* | awk '{print $0}')" | while read line
    do
    var="$(echo "$line" | sed "s|$(cat /tmp/multisystem/multisystem-mountpoint-usb)/||")"
    echo "var:${var}"
    if [ "$(grep "^${var}$" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden")" ]; then
    echo "multisystem-red|$(cat /tmp/multisystem/multisystem-mountpoint-usb)/${var}" >>/tmp/multisystem/multisystem-hidden
    else
    echo "multisystem-green|$(cat /tmp/multisystem/multisystem-mountpoint-usb)/${var}" >>/tmp/multisystem/multisystem-hidden
    fi
    done
    FCT_hidden_update_tree
    function FCT_hidden_showall()
    stat -c %n "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/"* | awk '{print "multisystem-green|" $0}' >/tmp/multisystem/multisystem-hidden
    echo "" >"$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden"
    FCT_hidden_update_tree
    function FCT_hidden_hiddenall()
    stat -c %n "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/"* | awk '{print "multisystem-red|" $0}' >/tmp/multisystem/multisystem-hidden
    echo -e "$(stat -c %n "$(cat /tmp/multisystem/multisystem-mountpoint-usb )/"* | awk '{print $0}')" | sed "s|$(cat /tmp/multisystem/multisystem-mountpoint-usb)/||" >"$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden"
    FCT_hidden_update_tree
    function FCT_hidden_modify()
    echo
    rechercher="$(echo "${1}" | sed "s|$(cat /tmp/multisystem/multisystem-mountpoint-usb)/||")"
    if [ ! "$(grep "^${rechercher}$" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden")" ]; then
    #zenity --info --text "Masquer ${rechercher}"
    echo "${rechercher}" >>"$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden"
    else
    #zenity --info --text "Afficher ${rechercher}"
    sed -i "s|^${rechercher}$||" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden"
    sed -i "/^$/d" "$(cat /tmp/multisystem/multisystem-mountpoint-usb)/.hidden"
    fi
    FCT_hidden_update_tree
    export -f FCT_hidden_showall FCT_hidden_hiddenall FCT_hidden_modify FCT_hidden_update_tree
    function comment()
    { true; }
    export -f comment
    MULTISYSTEM='<window spacing="0" width_request="400" height_request="420" window_position="1" title="MultiSystem" icon-name="multisystem-icon" decorated="true" resizable="false">
    <notebook show-border="false" show_tabs="false" page="0" labels="0|1">
    '$(comment Onglet masqué primaire 0)'
    <vbox spacing="0">
    <notebook tab-pos="2" show-border="false" scrollable="true" show-tabs="true" page="0" enable-popup="true" homogeneous="false" labels="MS|'$(eval_gettext 'Menus')'|'$(eval_gettext 'Démarrage')'|'$(eval_gettext 'Non-Libre')'|'$(eval_gettext 'À propos')'">
    '$(comment Onglet N°0 MultiSystem)'
    <vbox spacing="0" height_request="380">
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox height_request="200">
    <vbox spacing="0">
    <button name="stylebt" width_request="32" height_request="100" tooltip-text="'$(eval_gettext 'Tester dans Qemu')'">
    <input file icon="multisystem-qemu"></input>
    <action>./fonctions.sh qemu</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="100" tooltip-text="'$(eval_gettext 'Tester dans VirtualBox')'">
    <input file icon="multisystem-vbox"></input>
    <action>./fonctions.sh vbox</action>
    <action>refresh:MESSAGES</action>
    </button>
    </vbox>
    <tree icon="multisystem-tux" tooltip-text="'$(eval_gettext "Double clic pour modifier les noms dans le menu du bootloader.")'" rules_hint="true" headers_visible="false" hover_expand="false" hover_selection="false" exported_column="1">
    <label>1|2|3|4|5</label>
    <variable>tree</variable>
    <input icon_column="0">if [ "$(cat /tmp/multisystem/multisystem-laisserpasser-usb)" = "ok" ];then cat /tmp/multisystem/multisystem-mise-en-forme;else echo "multisystem-logo|||||||";fi</input>
    <action>./fonctions.sh menu\|$tree</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </tree>
    <vbox spacing="0">
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="Menu up">
    <input file stock="gtk-go-up"></input>
    <action>test $tree && ./fonctions.sh selup\|$tree</action>
    <variable>btup</variable>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="Menu move">
    <input file stock="gtk-jump-to"></input>
    <action>test $tree && ./fonctions.sh move\|$tree</action>
    <variable>btmove</variable>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="Menu down">
    <input file stock="gtk-go-down"></input>
    <action>test $tree && ./fonctions.sh seldown\|$tree</action>
    <variable>btdown</variable>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Supprimer un système d'exploitation")'">
    <input file stock="gtk-delete"></input>
    <action>test $tree && ./fonctions.sh selclear\|$tree</action>
    <variable>btclear</variable>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <checkbox width_request="32" height_request="40" use-underline="true" active="'$check_rem'" tooltip-text="'$(eval_gettext "Prévenir avant de supprimer")'">
    <label>_</label>
    <variable>ckeckrem</variable>
    <action>if true echo "true" >"$HOME/.multisystem/check_rem"</action>
    <action>if false echo "false" >"$HOME/.multisystem/check_rem"</action>
    </checkbox>
    </vbox>
    <vbox spacing="0">
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Afficher/Masquer des fichiers/dossiers dans votre clé usb")'">
    <input file icon="multisystem-hidden"></input>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 6 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Ajouter une option de démarrage (cmdline)")'">
    <input file stock="gtk-edit"></input>
    <variable>btcmdline</variable>
    <action>test $tree && ./fonctions.sh cmdline\|$tree</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Ajouter mode persistent")'">
    <input file icon="multisystem-save"></input>
    <variable>btpersistent1</variable>
    <action>./fonctions.sh persistent\|$tree</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Créer CD pour lancer USB")'">
    <input file icon="multisystem-cdrom"></input>
    <variable>btcdamorce2</variable>
    <action>./fonctions.sh cdamorce</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="40" tooltip-text="'$(eval_gettext "Internationalisation")'">
    <input file icon="multisystem-language"></input>
    <variable>btlang1</variable>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    </vbox>
    <vbox spacing="0">
    <button name="stylebt" width_request="32" height_request="80" tooltip-text="'$(eval_gettext "Réglages Grub")'">
    <input file stock="gtk-preferences"></input>
    <variable>btpref2</variable>
    <action>./fonctions.sh pref</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="80" tooltip-text="'$(eval_gettext "Mettre à jour Grub2")'">
    <input file icon="multisystem-grub48"></input>
    <variable>btgrub</variable>
    <action>./fonctions.sh grub</action>
    <action>refresh:MESSAGES</action>
    </button>
    <checkbox width_request="32" height_request="40" use-underline="true" active="true" tooltip-text="'$(eval_gettext "Décochez pour déplacer rapidement les menus, ne pas mettre à jour les bootloader, ATTENTION! cochez lors du dernier déplacement pour mettre à jour les bootloader.")'">
    <label>_</label>
    <variable>update_bootloader</variable>
    <action>if true echo true >/tmp/multisystem/multisystem-update-bootloader</action>
    <action>if false echo false >/tmp/multisystem/multisystem-update-bootloader</action>
    </checkbox>
    </vbox>
    <vbox spacing="0">
    <button name="stylebt" width_request="32" height_request="80" tooltip-text="'$(eval_gettext "Télécharger des LiveCD")'">
    <input file icon="multisystem-download"></input>
    <variable>btdownload1</variable>
    <action>echo All | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    <action>clear:QUOI</action>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 2 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <button name="stylebt" width_request="32" height_request="80" tooltip-text="'$(eval_gettext "Mise à jour")'">
    <input file icon="multisystem-update"></input>
    <variable>btmaj1</variable>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 3 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <checkbox width_request="32" height_request="40" use-underline="true" tooltip-text="'$(eval_gettext 'Vérifier les mise à jour à chaque lancement')'">
    <label>_</label>
    <variable>checkupdate2</variable>
    <default>true</default>
    <action>if true echo true >"'$HOME'/.multisystem/checkupdate"</action>
    <action>if false echo false >"'$HOME'/.multisystem/checkupdate"</action>
    <input>cat "'$HOME'/.multisystem/checkupdate"</input>
    <action>refresh:checkupdate</action>
    <action>refresh:checkupdate2</action>
    </checkbox>
    </vbox>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox height_request="70" spacing="0">
    <text sensitive="false">
    <variable>MESSAGES</variable>
    <input>echo "'$(eval_gettext "Volume USB:")'$(cat /tmp/multisystem/multisystem-selection-usb) UUID:$(cat /tmp/multisystem/multisystem-selection-uuid-usb)\n'$(eval_gettext 'Point de montage:')'$(cat /tmp/multisystem/multisystem-mountpoint-usb)\n'$(eval_gettext 'Taille:')'$(($(df | grep ^$(cat /tmp/multisystem/multisystem-selection-usb) | awk '\''{print $2}'\'')/1024))Mio '$(eval_gettext 'Occupé:')'$(($(df | grep ^$(cat /tmp/multisystem/multisystem-selection-usb) | awk '\''{print $3}'\'')/1024))Mio '$(eval_gettext 'Libre:')'$(($(df | grep ^$(cat /tmp/multisystem/multisystem-selection-usb) | awk '\''{print $4}'\'')/1024))Mio\n'$(eval_gettext 'Nombre de LiveCD:')'$(cat /tmp/multisystem/multisystem-nombreiso-usb)"</input>
    </text>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox spacing="0">
    <button name="stylebt" relief="2" tooltip-text="'$(eval_gettext 'Sauvegarde/Restauration')'">
    <input file icon="multisystem-save2"></input>
    <action>./fonctions.sh save</action>
    </button>
    <frame '$(eval_gettext "Glisser/Déposer iso/img")'>
    <hbox spacing="0">
    <entry primary-icon-name="multisystem-seliso" secondary-icon-name="'${theme_btn}'"
    accept="filename" activates-default="false" fs-folder="'$HOME/'" fs-action="file"
    fs-filters="*.iso|*.img" show-hidden="false" fs-title="Select an iso file"
    tooltip-text="'$(eval_gettext "Glisser/Déposer iso/img")'"
    primary-icon-tooltip-text="'$(eval_gettext 'Utilisez ce bouton si le Glisser/Déposer ne fonctionne pas.')'"
    secondary-icon-tooltip-text="'$(eval_gettext "Ajouter un liveCD")'">
    <variable>DAG</variable>
    <width>50</width><height>50</height>
    <action signal="changed">test "$DAG" && echo "DAG:$DAG"</action>
    <action signal="changed">test "$DAG" && ./fonctions.sh add\|"${DAG}" &</action>
    <action signal="changed">clear:DAG</action>
    <action signal="changed">refresh:DAG</action>
    <action signal="changed">refresh:MESSAGES</action>
    <action signal="changed">refresh:tree</action>
    <action signal="primary-icon-press">fileselect:DAG</action>
    <action signal="secondary-icon-press">./gui_multi_sel_launch.sh</action>
    </entry>
    </hbox>
    </frame>
    <button name="stylebt" relief="2" tooltip-text="'$(eval_gettext "Quitter")'">
    <input file icon="multisystem-exit"></input>
    <action>wmctrl -c "MultiSystem-logo"</action>
    <action>wmctrl -c "MultiSystem-logo2"</action>
    <action>wmctrl -c "VBox"</action>
    <action type="exit">exit</action>
    </button>
    </hbox>
    </vbox>
    '$(comment Onglet N°1 Menus)'
    <vbox spacing="0">
    <hbox spacing="0">
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file stock="gtk-preferences"></input>
    <variable>btpref</variable>
    <action>./fonctions.sh pref</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Réglages Grub')'</b>"</label>
    </text>
    </hbox>
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-grub48"></input>
    <variable>btgrub2</variable>
    <action>./fonctions.sh grub</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Mettre à jour Grub2')'</b>"</label>
    </text>
    </hbox>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-grub48"></input>
    <variable>btburg</variable>
    <action>./fonctions.sh burg</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Mettre à jour Burg')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file stock="gtk-save"></input>
    <variable>btsave</variable>
    <action>./fonctions.sh save</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Sauvegarde/Restauration')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-save"></input>
    <variable>btpersistent2</variable>
    <action>./fonctions.sh persistent\|$tree</action>
    <action>refresh:MESSAGES</action>
    <action>refresh:tree</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Ajouter mode persistent')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-resize"></input>
    <variable>btpersistent3</variable>
    <action>./fonctions.sh persistent-resize</action>
    <action>refresh:MESSAGES</action>
    <action>refresh:tree</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Redimensionner persistent')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-download"></input>
    <variable>btdownload2</variable>
    <action>echo All | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    <action>clear:QUOI</action>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 2 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:tree</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Télécharger des LiveCD')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-language"></input>
    <variable>btlang2</variable>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Internationalisation')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-gparted64"></input>
    <variable>btformat</variable>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 5 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Formater votre clé USB')'</b>"</label>
    </text>
    </hbox>
    <hbox spacing="0">
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file stock="gtk-execute"></input>
    <variable>btdebug</variable>
    <action>echo "" >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 4 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Déboguer')'</b>"</label>
    </text>
    </hbox>
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-vbox"></input>
    <variable>btinstallvbox</variable>
    <action>./fonctions.sh installvbox</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Installer VirtualBox')'</b>"</label>
    </text>
    </hbox>
    </hbox>
    <hbox spacing="0">
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-update"></input>
    <variable>btmaj2</variable>
    <action>echo 1 > /tmp/multisystem/multisystem-inputtab1</action>
    <action>echo 3 > /tmp/multisystem/multisystem-inputtab3</action>
    <action>refresh:tab1</action>
    <action>refresh:tab3</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Mise à jour')'</b>"</label>
    </text>
    </hbox>
    <hbox spacing="0">
    <button name="stylebt" width_request="36" height_request="36">
    <input file stock="gtk-delete"></input>
    <variable>btuninstall</variable>
    <action>nohup xterm -title 'Uninstall' -e "sudo ./uninstall.sh" &</action>
    <action>wmctrl -c "MultiSystem-logo"</action>
    <action>wmctrl -c "MultiSystem-logo2"</action>
    <action>wmctrl -c "VBox"</action>
    <action type="exit">exit</action>
    </button><text width_request="157" use-markup="true">
    <label>"<b>'$(eval_gettext 'Désinstaller')'</b>"</label>
    </text>
    </hbox>
    </hbox>
    </vbox>
    '$(comment Onglet N°2 Démarrage)'
    <vbox spacing="0">
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-cdrom"></input>
    <variable>btcdamorce</variable>
    <action>./fonctions.sh cdamorce</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Créer CD pour lancer USB')'</b>"</label>
    </text>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-grub48"></input>
    <variable>btinfoboot</variable>
    <action>./fonctions.sh infoboot\|grub</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Boot depuis Grub/Grub2')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-windows48"></input>
    <variable>btinfoboot</variable>
    <action>./fonctions.sh infoboot\|xp</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Boot depuis Windows XP')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-windows48"></input>
    <variable>btinfoboot</variable>
    <action>./fonctions.sh infoboot\|vista</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Boot depuis Windows Vista')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-apple48"></input>
    <variable>btinfoboot</variable>
    <action>./fonctions.sh infoboot\|macintel</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Boot depuis MacIntel')'</b>"</label>
    </text>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-qemu"></input>
    <variable>btqemu</variable>
    <action>./fonctions.sh qemu</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Tester votre liveUSB dans Qemu')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-vbox"></input>
    <variable>btvbox1</variable>
    <action>./fonctions.sh vbox</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Tester votre liveUSB dans VirtualBox')'</b>"</label>
    </text>
    </hbox>
    <hbox>
    <button name="stylebt" width_request="36" height_request="36">
    <input file icon="multisystem-vbox"></input>
    <variable>btvbox2</variable>
    <action>wmctrl -c "VBox"</action>
    <action>./VBox_livecd_gui.sh &</action>
    <action>refresh:MESSAGES</action>
    </button>
    <text width_request="345" use-markup="true">
    <label>"<b>'$(eval_gettext 'Tester un LiveCD dans VirtualBox')'</b>"</label>
    </text>
    </hbox>
    </vbox>
    '$(comment Onglet N°3 Non-Libre)'
    <vbox spacing="0">
    <text use-markup="true" wrap="true" width-chars="70" sensitive="false">
    <input>echo "\<b>\<big>'$(eval_gettext "Partie Non Libre de MultiSystem")'\</big>\</b>" | sed "s%\\\%%g"</input>
    </text>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <button name="stylebt" tooltip-text="'$(eval_gettext 'PLoP Boot Manager est un freeware.')'">
    <input file icon="multisystem-plop-logo"></input>
    <label>'$(eval_gettext 'Télécharger PLoP Boot Manager')'</label>
    <action>./fonctions-nonfree.sh plop</action>
    <action>refresh:tree2</action>
    </button>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <button name="stylebt" tooltip-text="'$(eval_gettext 'Utilisé pour démarrer les iso de Windows XP')'">
    <input file icon="multisystem-windows48"></input>
    <label>'$(eval_gettext 'Télécharger firadisk.ima')'</label>
    <action>./fonctions-nonfree.sh firadisk</action>
    <action>refresh:tree2</action>
    </button>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox homogeneous="true">
    <hbox>
    <button name="stylebt" tooltip-text="'$(eval_gettext 'Utilisé pour les iso BartPE')'">
    <input file icon="multisystem-windows48"></input>
    <label>'$(eval_gettext 'Télécharger Microsoft Windows Server 2003 SP1')'</label>
    <action>./fonctions-nonfree.sh bartpe</action>
    <action>refresh:tree2</action>
    </button>
    </hbox>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox height_request="200">
    <tree hover_selection="true" headers_visible="false" exported_column="0">
    <label>files</label>
    <input icon_column="0">cat /tmp/multisystem/multisystem-nonfree</input>
    <variable>tree2</variable>
    <action signal="button-press-event">nohup '${navuse}' "$HOME"/.multisystem/nonfree&</action>
    </tree>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    </vbox>
    '$(comment Onglet N°4 À propos)'
    <vbox spacing="0">
    <text use-markup="true" wrap="true" sensitive="false">
    <input>echo "\<b>'$(eval_gettext 'MultiSystem recherche des traducteurs,\nSi vous souhaitez participer,\nMerci de nous contacter.\nContact:')'[email protected]\</b>" | sed "s%\\\%%g"</input>
    </text>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox height_request="32" homogeneous="true">
    <text use-underline="true"><label>_</label></text>
    <text use-markup="true">
    <input file>/tmp/multisystem/multisystem-inputversion</input>
    </text>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <pixmap>
    <input file>"'${dossier}'/pixmaps/multisystem-map-flags.png"</input>
    </pixmap>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox height_request="160">
    <tree headers_visible="false" exported_column="1">
    <label>1|2|3</label>
    <input icon_column="0">cat /tmp/multisystem/multisystem-about</input>
    <variable>tree3</variable>
    <action>xdg-email --utf8 --subject "MultiSystem translation" --body "message" "${tree3}" &</action>
    </tree>
    </hbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    </vbox>
    <variable>tab2</variable>
    <input file>/tmp/multisystem/multisystem-inputtab2</input>
    <action signal="show">refresh:tree</action>
    </notebook>
    </vbox>
    '$(comment Onglet masqué secondaire 1)'
    <vbox spacing="0">
    <notebook show-border="false" show_tabs="false" page="0" labels="0|1|2|3|4|5|6|7|8|9|10|11">
    '$(comment Onglet N°0 N/A)'
    <vbox spacing="0">
    <vbox height_request="370">
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <text><label>N/A</label></text>
    </vbox>
    '$(FCT_HOME)'
    </vbox>
    '$(comment Onglet N°1 Internationalisation)'
    <vbox spacing="0">
    <vbox height_request="370">
    <frame '$(eval_gettext 'Changer de language')'>
    <hbox spacing="0" height_request="32">
    <pixmap>
    <input file icon="config-language"></input>
    <height>32</height>
    <width>32</width>
    </pixmap>
    <text width_request="5" use-underline="true"><label>_</label></text>
    <comboboxtext allow-empty="false" value-in-list="true" tooltip-text="'$(eval_gettext 'Changer de language')'">
    <variable>lister_lang</variable>
    <input>bash -c "FCT_lister_lang"</input>
    <action signal="changed">echo "$(grep "^$lister_lang" "'${dossier}'/lang_list.txt")" >"$HOME/.multisystem/lang_sel.txt"</action>
    <action signal="changed">nohup "${dossier}/gui_multisystem.sh" &</action>
    <action signal="changed">wmctrl -c "MultiSystem-logo"</action>
    <action signal="changed">wmctrl -c "MultiSystem-logo2"</action>
    <action signal="changed">wmctrl -c "VBox"</action>
    <action signal="changed">exit:selang</action>
    </comboboxtext>
    </hbox>
    </frame>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <frame>
    <text use-markup="true" wrap="true" sensitive="false">
    <input>echo "\<b>\<big>'$texte_annonce'\</big>\</b>" | sed "s%\\\%%g"</input>
    </text>
    </frame>
    </vbox>
    '$(FCT_HOME)'
    </vbox>
    '$(comment Onglet N°2 Télécharger des LiveCD)'
    <vbox spacing="0">
    <vbox height_request="370">
    <hbox>
    <entry activates_default="true">
    <variable>QUOI</variable>
    </entry>
    <button name="stylebt">
    <input file stock="gtk-find"></input>
    <variable>RECHERCHER</variable>
    <action>echo "$QUOI" >/tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    </hbox>
    <hbox>
    <button name="stylebt">
    <label>All</label>
    <input file stock="gtk-find"></input>
    <action>clear:QUOI</action>
    <action>echo All | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    <button name="stylebt">
    <label>Audio</label>
    <input file stock="gtk-find"></input>
    <action>clear:QUOI</action>
    <action>echo Audio | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    <button name="stylebt">
    <label>Utility</label>
    <input file stock="gtk-find"></input>
    <action>clear:QUOI</action>
    <action>echo Utility | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    <button name="stylebt">
    <label>Antivirus</label>
    <input file stock="gtk-find"></input>
    <action>clear:QUOI</action>
    <action>echo Antivirus | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    <button name="stylebt">
    <label>Gamer</label>
    <input file stock="gtk-find"></input>
    <action>clear:QUOI</action>
    <action>echo Gamer | tee /tmp/multisystem/multisystem-output-list</action>
    <action>refresh:tree_list</action>
    </button>
    </hbox>
    <tree headers_visible="true" exported_column="3" rules_hint="true">
    <label>Name|Bootloader|Category|URL Download</label>
    <variable>tree_list</variable>
    <input icon_column="0">bash -c "FCT_download_livecd"</input>
    <action>test ${tree_list} && xdg-open ${tree_list} &</action>
    </tree>
    </vbox>
    '$(FCT_HOME)'
    </vbox>
    '$(comment Onglet N°3 Mise à jour)'
    <vbox spacing="0">
    <vbox height_request="370">
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox width_request="400" width_request="50"scrollable="true">
    <text use-markup="true" wrap="true" width-chars="70">
    <input>echo "\<b>\<span color=\"red\">'$(eval_gettext "A ce jour MultiSystem est gratuit\nmais son développement n\\047est pas sans frais!\nSi vous l\\047utilisez régulièrement\net que vous souhaitez qu\\047il continue à évoluer,\nmerci de faire un geste de soutien via paypal.\n\npar avance MERCI!\nFrançois Fabre @frafa")'\</span>\</b>" | sed "s%\\\%%g" | sed "s%\\\\n\\\\n\\\\n%%g"</input>
    </text>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <checkbox>
    <label>"'$(eval_gettext 'Vérifier les mise à jour à chaque lancement')'"</label>
    <variable>checkupdate</variable>
    <default>true</default>
    <action>if true echo true >"'$HOME'/.multisystem/checkupdate"</action>
    <action>if false echo false >"'$HOME'/.multisystem/checkupdate"</action>
    <input>cat "'$HOME'/.multisystem/checkupdate"</input>
    <action>refresh:checkupdate</action>
    <action>refresh:checkupdate2</action>
    </checkbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox spacing="0">
    <radiobutton active="true">
    <label>"'$(eval_gettext "Faire une donation")'"</label>
    <variable>radio1</variable>
    </radiobutton>
    <radiobutton>
    <label>"'$(eval_gettext "Ne pas faire de donation")'"</label>
    <variable>radio2</variable>
    </radiobutton>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <vbox spacing="0">
    <radiobutton active="true">
    <label>"'$(eval_gettext "Mise à jour")'"</label>
    <variable>radio3</variable>
    </radiobutton>
    <radiobutton>
    <label>"'$(eval_gettext "Mise à jour partielle")'"</label>
    <variable>radio4</variable>
    </radiobutton>
    </vbox>
    <pixmap>
    <input file>'${theme_bdo}'</input>
    </pixmap>
    <hbox>
    <button name="stylebt">
    <input file icon="multisystem-update"></input>
    <label>'$(eval_gettext 'Mise à jour')'</label>
    <action>bash -c "FCT_update" &</action>
    <action>wmctrl -c "MultiSystem-logo"</action>
    <action>wmctrl -c "MultiSystem-logo2"</action>
    <action>wmctrl -c "VBox"</action>
    <action type="exit">exit</action>
    </button>
    </hbox>
    </vbox>
    '$(FCT_HOME)'
    </vbox>
    '$(comment Onglet N°4 Déboguer)'
    <vbox spacing="0">
    <vbox height_request="370">
    <frame Debug>
    <vbox scrollable="true">
    <edit>
    <variable>debug_edit</variable>
    <input file>/tmp/multisystem/multisystem-test-usb</input>
    </edit>
    </vbox>
    </frame>
    <hbox homogeneous="true">
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "fdisk -l")'"</label>
    <action>fdisk -l $(cat /tmp/multisystem/multisystem-selection-usb | sed '\''s/[0-9]//'\'')>/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "parted print")'"</label>
    <action>parted -s $(cat /tmp/multisystem/multisystem-selection-usb | sed '\''s/[0-9]//'\'') unit MB print >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    </hbox>
    <hbox homogeneous="true">
    <hbox spacing="0">
    <button name="stylebt" width_request="115">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "Afficher mbr")'"</label>
    <action>dd if="$(cat /tmp/multisystem/multisystem-selection-usb | sed '\''s/[0-9]//'\'')" bs=512 count=1 | xxd >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    <button name="stylebt" width_request="65">
    <input file icon="gtk-execute"></input>
    <label>"'$(cat /tmp/multisystem/multisystem-selection-usb | sed 's@/dev/@@')'"</label>
    <action>dd if="$(cat /tmp/multisystem/multisystem-selection-usb)" bs=512 count=1 | xxd >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    </hbox>
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "udevadm info")'"</label>
    <action>udevadm info -q all -n $(cat /tmp/multisystem/multisystem-selection-usb | sed '\''s/[0-9]//'\'') >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    </hbox>
    <hbox homogeneous="true">
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "Version Grub2")'"</label>
    <action>grub-install -v >/tmp/multisystem/multisystem-test-usb</action>
    <action>refresh:debug_edit</action>
    </button>
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "Réparer fat32")'"</label>
    <action signal="button-press-event">echo '${message_debug}' >/tmp/multisystem/multisystem-test-usb</action>
    <action signal="button-press-event">refresh:debug_edit</action>
    <action signal="button-release-event">bash -c "xterm -e FCT_debug_repair"</action>
    <action signal="button-release-event">echo >/tmp/multisystem/multisystem-test-usb</action>
    <action signal="button-release-event">refresh:debug_edit</action>
    </button>
    </hbox>
    <hbox homogeneous="true">
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "Benchmark écriture")'"</label>
    <action signal="button-press-event">echo '${message_debug}' >/tmp/multisystem/multisystem-test-usb</action>
    <action signal="button-press-event">refresh:debug_edit</action>
    <action signal="button-release-event">bash -c "xterm -e FCT_debug_write"</action>
    <action signal="button-release-event">refresh:debug_edit</action>
    </button>
    <button name="stylebt" width_request="180">
    <input file icon="gtk-execute"></input>
    <label>"'$(eval_gettext "Benchmark lecture")'"</label>
    <action signal="button-press-event">echo '${message_debug}' >/tmp/multisystem/multisystem-test-usb</action>
    <action signal="button-press-event">refresh:debug_edit</action>
    <action signal="button-release-eve

    Lone_Wolf wrote:
    Not sure why the usermod command didn't have the desired effect, but the gpasswd command is the preferred way :
    try
    # gpasswd -a [user] [group]
    I tried this and restarted
    #gpasswd -a <user> adm
    Adding <user> to group adm
    and it exited successfully but still it didn't fix the problem

Maybe you are looking for