Fix JS translations loading method to make translations available earlier
This commit is contained in:
parent
3a61299005
commit
0219714d4a
18 changed files with 44 additions and 53 deletions
|
@ -270,28 +270,28 @@ function cli_compile_messages($command_args) {
|
|||
logging('DEBUG', _("Lang alias symlink found: %s -> %s"), $lang, $real_lang_dir);
|
||||
|
||||
// Create JSON catalog symlink (if not exists)
|
||||
$json_link = "$root_dir_path/public_html/translations/$lang.json";
|
||||
$link_target = "$real_lang_dir.json";
|
||||
if (!file_exists($json_link)) {
|
||||
if (symlink($link_target, $json_link)) {
|
||||
$js_link = "$root_dir_path/public_html/translations/$lang.js";
|
||||
$link_target = "$real_lang_dir.js";
|
||||
if (!file_exists($js_link)) {
|
||||
if (symlink($link_target, $js_link)) {
|
||||
logging('INFO', _("JSON catalog symlink for %s -> %s created (%s)"),
|
||||
$lang, $real_lang_dir, $json_link);
|
||||
$lang, $real_lang_dir, $js_link);
|
||||
}
|
||||
else {
|
||||
logging('ERROR', _("Fail to create JSON catalog symlink for %s -> %s (%s)"),
|
||||
$lang, $real_lang_dir, $json_link);
|
||||
$lang, $real_lang_dir, $js_link);
|
||||
$error = True;
|
||||
}
|
||||
}
|
||||
elseif (readlink($json_link) == $link_target) {
|
||||
elseif (readlink($js_link) == $link_target) {
|
||||
logging('DEBUG', _("JSON catalog symlink for %s -> %s already exist (%s)"),
|
||||
$lang, $real_lang_dir, $json_link);
|
||||
$lang, $real_lang_dir, $js_link);
|
||||
}
|
||||
else {
|
||||
logging(
|
||||
'WARNING',
|
||||
_("JSON catalog file for %s already exist, but it's not a symlink to %s (%s)"),
|
||||
$lang, $real_lang_dir, $json_link
|
||||
$lang, $real_lang_dir, $js_link
|
||||
);
|
||||
$error = True;
|
||||
}
|
||||
|
@ -334,19 +334,19 @@ function cli_compile_messages($command_args) {
|
|||
|
||||
// Compile messages from PO file to JSON catalog file
|
||||
$json_catalog = po2json($lang, $po_file);
|
||||
$json_file = "$root_dir_path/public_html/translations/$lang.json";
|
||||
if(!$fd = fopen($json_file, 'w')) {
|
||||
$js_file = "$root_dir_path/public_html/translations/$lang.js";
|
||||
if(!$fd = fopen($js_file, 'w')) {
|
||||
logging('ERROR', _("Fail to open %s JSON catalog file in write mode (%s)."),
|
||||
$lang, $json_file);
|
||||
$lang, $js_file);
|
||||
$error = True;
|
||||
}
|
||||
elseif (fwrite($fd, $json_catalog) === false) {
|
||||
elseif (fwrite($fd, sprintf("translations_data = %s;", $json_catalog)) === false) {
|
||||
logging('ERROR', _("Fail to write %s JSON catalog in file (%s)."),
|
||||
$lang, $json_file);
|
||||
$lang, $js_file);
|
||||
$error = True;
|
||||
}
|
||||
else {
|
||||
logging('INFO', _("%s JSON catalog writed (%s)."), $lang, $json_file);
|
||||
logging('INFO', _("%s JSON catalog writed (%s)."), $lang, $js_file);
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
|
|
|
@ -140,10 +140,9 @@ function init_translation() {
|
|||
logging('TRACE', "Test: "._('Hello world !'));
|
||||
|
||||
// JS translation file
|
||||
$json_translation_file = "translations/$lang.json";
|
||||
if (php_sapi_name() != "cli" && is_file("$root_dir_path/public_html/$json_translation_file")) {
|
||||
add_js_file("lib/babel.js");
|
||||
add_js_file("js/translation.js");
|
||||
$js_translation_file = "translations/$lang.js";
|
||||
if (php_sapi_name() != "cli" && is_file("$root_dir_path/public_html/$js_translation_file")) {
|
||||
add_js_file(array("lib/babel.js", "js/translation.js", $js_translation_file));
|
||||
$smarty->assign('lang', $lang);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2022-04-24 19:09+0200\n"
|
||||
"PO-Revision-Date: 2022-04-24 19:09+0200\n"
|
||||
"POT-Creation-Date: 2022-04-24 20:13+0200\n"
|
||||
"PO-Revision-Date: 2022-04-24 20:13+0200\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
|
@ -1,7 +1,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2022-04-24 19:09+0200\n"
|
||||
"PO-Revision-Date: 2022-04-24 19:09+0200\n"
|
||||
"POT-Creation-Date: 2022-04-24 20:13+0200\n"
|
||||
"PO-Revision-Date: 2022-04-24 20:13+0200\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
@ -1,26 +1,23 @@
|
|||
/*
|
||||
* I18n
|
||||
*/
|
||||
var lang = null;
|
||||
var translations;
|
||||
var translations_data;
|
||||
|
||||
function _(string) {
|
||||
var translated = translations.gettext(string);
|
||||
return (translated !== '') ? translated : string;
|
||||
var translated = (translations?translations.gettext(string):string);
|
||||
return (translated !== '') ? translated : string;
|
||||
}
|
||||
|
||||
|
||||
function ngettext(singular, plural, n) {
|
||||
return translations.ngettext(singular, plural, n);
|
||||
return (
|
||||
translations?
|
||||
translations.ngettext(singular, plural, n):
|
||||
(n > 1?plural:singular)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
$(document).ready( function() {
|
||||
// Load Gettext translations
|
||||
var catalog = {};
|
||||
$.getJSON('translations/'+lang+'.json', function(data) {
|
||||
catalog = data;
|
||||
}).always(function() {
|
||||
translations = babel.Translations.load(catalog).install();
|
||||
});
|
||||
translations = babel.Translations.load(translations_data?translations_data:{}).install();
|
||||
});
|
||||
|
|
1
public_html/translations/fr.js
Symbolic link
1
public_html/translations/fr.js
Symbolic link
|
@ -0,0 +1 @@
|
|||
fr_FR.UTF8.js
|
|
@ -1 +0,0 @@
|
|||
fr_FR.UTF8.json
|
1
public_html/translations/fr_FR.UTF-8.js
Symbolic link
1
public_html/translations/fr_FR.UTF-8.js
Symbolic link
|
@ -0,0 +1 @@
|
|||
fr_FR.UTF8.js
|
|
@ -1 +0,0 @@
|
|||
fr_FR.UTF8.json
|
1
public_html/translations/fr_FR.UTF8.js
Normal file
1
public_html/translations/fr_FR.UTF8.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public_html/translations/fr_FR.js
Symbolic link
1
public_html/translations/fr_FR.js
Symbolic link
|
@ -0,0 +1 @@
|
|||
fr_FR.UTF8.js
|
|
@ -1 +0,0 @@
|
|||
fr_FR.UTF8.json
|
1
public_html/translations/fr_FR.utf-8.js
Symbolic link
1
public_html/translations/fr_FR.utf-8.js
Symbolic link
|
@ -0,0 +1 @@
|
|||
fr_FR.UTF8.js
|
|
@ -1 +0,0 @@
|
|||
fr_FR.UTF8.json
|
1
public_html/translations/fr_FR.utf8.js
Symbolic link
1
public_html/translations/fr_FR.utf8.js
Symbolic link
|
@ -0,0 +1 @@
|
|||
fr_FR.UTF8.js
|
|
@ -1 +0,0 @@
|
|||
fr_FR.UTF8.json
|
|
@ -88,19 +88,14 @@
|
|||
{/block}
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<!-- Jquery & Bootstrap -->
|
||||
<script src="lib/jquery-3.4.1.min.js"></script>
|
||||
<script src="lib/bootstrap4/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script src="lib/jquery-3.4.1.min.js"></script>
|
||||
<script src="lib/bootstrap4/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
{foreach $js as $file}
|
||||
<script language="javascript" src="{$file}"></script>
|
||||
{/foreach}
|
||||
|
||||
<!-- Global variables -->
|
||||
<script>
|
||||
var lang = "{$lang}";
|
||||
</script>
|
||||
<!-- Other libs & JavaScript scripts -->
|
||||
{foreach $js as $file}
|
||||
<script language="javascript" src="{$file}"></script>
|
||||
{/foreach}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue