Umieszczenie zmiennej z pliku językowego w pliku js

JS  Założony przez  Supryk.

Witajcie,

Może ktoś bardziej doświadczony powie mi jak zmienną z pliku *.lnag.php wywolać a raczej umieścić w pliku *.js

Sprawa tyczy sie mybb 1.8, napisalem w zlym dziale

Patrząc w header inlude widze coś takiego

<script type="text/javascript">
<!--
    lang.unknown_error = "{$lang->unknown_error}";

    lang.select2_match = "{$lang->select2_match}";
    lang.select2_matches = "{$lang->select2_matches}";
    lang.select2_nomatches = "{$lang->select2_nomatches}";
    lang.select2_inputtooshort_single = "{$lang->select2_inputtooshort_single}";
    lang.select2_inputtooshort_plural = "{$lang->select2_inputtooshort_plural}";
    lang.select2_inputtoolong_single = "{$lang->select2_inputtoolong_single}";
    lang.select2_inputtoolong_plural = "{$lang->select2_inputtoolong_plural}";
    lang.select2_selectiontoobig_single = "{$lang->select2_selectiontoobig_single}";
    lang.select2_selectiontoobig_plural = "{$lang->select2_selectiontoobig_plural}";
    lang.select2_loadmore = "{$lang->select2_loadmore}";
    lang.select2_searching = "{$lang->select2_searching}";

    var cookieDomain = "{$mybb->settings['cookiedomain']}";
    var cookiePath = "{$mybb->settings['cookiepath']}";
    var cookiePrefix = "{$mybb->settings['cookieprefix']}";
    var deleteevent_confirm = "{$lang->deleteevent_confirm}";
    var removeattach_confirm = "{$lang->removeattach_confirm}";
    var loading_text = '{$lang->ajax_loading}';
    var saving_changes = '{$lang->saving_changes}';
    var use_xmlhttprequest = "{$mybb->settings['use_xmlhttprequest']}";
    var my_post_key = "{$mybb->post_code}";
    var rootpath = "{$mybb->settings['bburl']}";
    var imagepath = "{$theme['imgdir']}";
      var yes_confirm = "{$lang->yes}";
    var no_confirm = "{$lang->no}";
    var MyBBEditor = null;
    var spinner_image = "{$theme['imgdir']}/spinner.gif";
    var spinner = "<img src='" + spinner_image +"' alt='' />";
// -->
</script>
i teraz rozumiem ze uzycie yes_confirm w dowolnym pliku *.js spowoduje wyświetlenia tam tekstu?

<script type="text/javascript">
<!--
    lang.unknown_error = "{$lang->unknown_error}";
    lang.error = "{$lang->error}";
// -->
</script>
(04.11.2014, 17:44)Supryk napisał(a): i teraz rozumiem ze uzycie yes_confirm w dowolnym pliku *.js spowoduje wyświetlenia tam tekstu?
Tak, o ile kod używający tej zmiennej zostanie wywołany po jej ustawieniu.
(04.11.2014, 18:37)Devilshakerz napisał(a):
(04.11.2014, 17:44)Supryk napisał(a): i teraz rozumiem ze uzycie yes_confirm w dowolnym pliku *.js spowoduje wyświetlenia tam tekstu?
Tak, o ile kod używający tej zmiennej zostanie wywołany po jej ustawieniu.


Mógłbyś pokazać przykład?
<script>
var xx = "mrrrr;*";
<script>
<script type="text/javascript" src="haha.js"></script>
plik haha.js
alert(xx);
(04.11.2014, 19:03)Majcon napisał(a):
<script>
var xx = "mrrrr;*";
<script>
<script type="text/javascript" src="haha.js"></script>
plik haha.js
alert(xx);
no tak chyba nie pomyślalem co czytam

inna metoda? wysłanie w wywołaniu funkcji powinno zadziałać, jakieś pomysly jeszcze?

hmmm
tak patrze jeszcze na markowanie dzialow

{$headerinclude}
<script type="text/javascript">
<!--
    lang.no_new_posts = "{$lang->no_new_posts}";
    lang.click_mark_read = "{$lang->click_mark_read}";
// -->
</script>
</head>
czyli wywolanie jest wyzej bo w general.js
to jest tak jak z php
jeżeli masz zmienną użytą w funkcji to nie jest ważne czy przed czy po
function aaa()
{
alert(xx);
}
<script>
var xx = "mrrrr;*";
aaa();
<script>
(04.11.2014, 19:35)Majcon napisał(a): to jest tak jak z php
jeżeli masz zmienną użytą w funkcji to nie jest ważne czy przed czy po

Chyba nie piszesz o tym samym PHP.. Zmienną albo należy przekazać jako argument, albo zglobalizować w ciele funkcji. Inaczej będzie pusta. http://php.net/manual/en/language.variables.scope.php

Z kolei w JS wszystkie zmienne znajdujące się poza funkcjami itp. są globalne i ogólnodostępne.
http://www.w3schools.com/js/js_scope.asp
Destroy666 napisał(a):Chyba nie piszesz o tym samym PHP.. Zmienną albo należy przekazać jako argument, albo zglobalizować w ciele funkcji. Inaczej będzie pusta. http://php.net/manual/en/language.variables.scope.php

wiem ale chodziło o to że jest podobnie że jeżeli zmienna jest stworzona po funkcji ale przed wywołaniem funkcji to można ją użyć w funkcji oczywiście w php należy użyć global natomiast jak sam napisałeś w js wszystkie zmienne są globalne
Pany powiedzcie mi jeszcze czy składnia jest poprawna
opcja jeden
            if(!message[1])
            {
                message[1] = lang.unknown_error;
            }
            if(this.spinner)
            {
                this.spinner.hide();
            }
            document.body.style.cursor = 'default';
            alert(message[1]);
        }

opcja 2

            if(!message[1])
            {
                message[1] = '+lang.unknown_error+';
            }
            if(this.spinner)
            {
                this.spinner.hide();
            }
            document.body.style.cursor = 'default';
            alert('+message[1]+');
        }

chodzi tu glownie o
alert('+message[1]+');
message[1] = '+lang.unknown_error+';
Pozwolę wtrącić swoje 5 groszy :P

Wg mnie pierwsza opcja. Znak + to odpowiednik . w PHP
oczywiście że pierwsza
jak już to
if(!message[1])
{
    message[1] = ''+lang.unknown_error+'';
}
if(this.spinner)
{
    this.spinner.hide();
}
document.body.style.cursor = 'default';
alert(''+message[1]+'');
bo
'+message[1]+'
spowoduje że zamiast wyświetlenia zawartości message[1] wyświetli Ci się message[1]
tak jak w php $zmienna = 'ss'; echo '$zmienna';
i tak dokładnie + działa jak . w php var ss = 'tekst'+zmienna+'tkest3';



Użytkownicy przeglądający ten wątek:

1 gości