3461a8c22a370b26ad4dd6ebbf034325fcbe8ae1
[scilab.git] / scilab / tools / localization / generatePoFile.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2007 - INRIA - Allan CORNET
3 // Copyright (C) 2011-2012 - DIGITEO - Allan CORNET
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10
11 function  generatePoFile(LANGUAGE)
12     if getos() <> "Windows" then
13         error(999, "Used only under Windows");
14     end
15
16     if ~isdef("%c_a_c") then
17         exec("SCI/modules/overloading/macros/%c_a_c.sci");
18     end
19
20     LC = "LC_MESSAGES";
21     DEST_FILE_MO = SCI + filesep() + "locale" + filesep() + LANGUAGE + filesep() + LC + filesep() + "scilab.mo";
22     DEST_FILE_PO = strsubst(DEST_FILE_MO, "scilab.mo", "scilab.po");
23     LC = "LC_MESSAGES";
24     PATH_GETTEXT_TOOLS = SCI + filesep() + "tools/gettext";
25
26     // make destination directories
27     if ~isdir(SCI + filesep() + "locale") then
28         createdir(SCI + filesep() + "locale");
29     end
30
31     if ~isdir(SCI + filesep() + "locale" + filesep() + LANGUAGE) then
32         createdir(SCI + filesep() + "locale" + filesep() + LANGUAGE);
33     end
34
35     if ~isdir(SCI + filesep() + "locale" + filesep() + LANGUAGE + filesep() + LC) then
36         createdir(SCI + filesep() + "locale" + filesep() + LANGUAGE + filesep() + LC);
37     end
38
39     Modules = getmodules();
40     PATH_PO = SCI + filesep() + "modules" + filesep() + Modules + filesep() + "locales" + filesep();
41     if LANGUAGE ==  "en_US" then
42         FILENAME_PO = Modules + ".pot";
43     else
44         FILENAME_PO = LANGUAGE + ".po";
45     end
46
47     List_files = [];
48     for k = 1:size(PATH_PO, "*")
49         if LANGUAGE ==  "en_US" then
50             if findfiles(PATH_PO(k), FILENAME_PO(k)) <> [] then
51                 List_files = [List_files ; fullpath(PATH_PO(k) +  FILENAME_PO(k))];
52             end
53         else
54             if findfiles(PATH_PO(k), FILENAME_PO) <> [] then
55                 List_files = [List_files ; fullpath(PATH_PO(k) +  FILENAME_PO)];
56             end
57         end
58     end
59
60     if (List_files <> []) then
61         if newest([DEST_FILE_MO; List_files]) <> 1 then
62             cmdline_msgcat = PATH_GETTEXT_TOOLS + filesep() + "msgcat --use-first -o " + DEST_FILE_PO + " " + strcat("""" + List_files + """", " ");
63             unix(cmdline_msgcat);
64             cmline_msgfmt = PATH_GETTEXT_TOOLS + filesep() + "msgfmt --statistics -o " + DEST_FILE_MO + " " + DEST_FILE_PO;
65             unix(cmline_msgfmt);
66         end
67     end
68
69 endfunction
70 // ======================================
71 function languages = findLanguagesToBuild()
72     languages = [];
73
74     f1 = findfiles("SCI/modules/core/locales/", "*.pot");
75     f2 = findfiles("SCI/modules/core/locales/", "*.po");
76
77     if f1 <> [] then
78         languages = ["en_US"];
79     end
80
81     if f2 <> [] then
82         f2 = strsubst(f2, ".po", "");
83         languages = [languages, f2'];
84     end
85 endfunction
86 // ======================================
87 // Main
88 LANGUAGES = findLanguagesToBuild();
89 mprintf("-- Build localization (.mo from .po) --\n");
90
91 for L = LANGUAGES
92     mprintf("    -- Building for ""%s"" --\n", L);
93     generatePoFile(L);
94 end
95 // ======================================