PDA

Volledige versie bekijken : button om van taal te veranderen


clemens
%Europe/Berlin %919 %2005, 23:03
Ben bezig met een website in flash mx 2004, hier in moet de fuctie komen dat je kunt wisselen tussen twee talen nl. engels en nederlands. Het moet zo zijn dat wanneer je de button click om van taal te veranderen, (bijv. van nederlands naar engels) dat alles op de pagina verandert in die taal dus buttons en texten. Hoe kan ik dit het beste aan pakken!

Laiverd
%Europe/Berlin %947 %2005, 23:43
Wat ik zou doen, is alle tekstelementen die in twee talen moeten in een twee xml-bestand zetten (een voor elke taal), en op de klik van een button een ander xml-bestand laden, om dan vervolgens alle tekstvelden waarin je die tekstelementen gebruikt, door te lopen en de tekst te veranderen.

clemens
%Europe/Berlin %979 %2005, 00:30
oke, maar heb totaal geen verstand van xml. :(

Jordy
%Europe/Berlin %981 %2005, 00:32
zie mijn signature !!

Stuf
%Europe/Berlin %989 %2005, 00:44
op www.gotoandlearn.com staan ook goeie tutorials over xml

theFlashWizard
%Europe/Berlin %146 %2005, 04:31
en hier mischien wel bijna alles over XML:
http://www.kirupa.com/web/xml/index.htm

Laiverd
%Europe/Berlin %307 %2005, 08:23
oke, maar heb totaal geen verstand van xml. :(XML is wat mij betreft het meest handig (en dus de moeite waard om wat tijd in te investeren); maar je kunt natuurlijk ook 'gewoon' een tekstbestand gebruiken, of al je tekstelementen in een database opslaan en ze daar uit halen m.b.v. PHP (of een andere serverside scripttaal).

Overigens; als je weet wat HTML is, dan is de basis van XML je in een ochtend/middag/avond eigen te maken.

John

depieje
%Europe/Berlin %427 %2005, 11:16
Ik zit hier met hetzelfde probleem.

Ik wil ook een site maken die in 2 talen bekeken kan worden.

de basis van XML ken ik maar ik heb het nog niet gebruikt binnen flash.

ik ben al eventjes op de aangegeven links gaan kijken maar dat ziet er toch nog behoorlijk ingewikkeld uit. Is het zo dat er altijd naar 'firstchilds' of 'childnodes' o.d. moet aangeroepen worden en niet dat je de benaming van de tag's kan gebruiken? lijkt me niet logisch toch?

kan je bvb niet het gehele xml-document inladen in flash en de tagnames koppelen aan variabele textvakken?

grtz,
depieje

Jordy
%Europe/Berlin %833 %2005, 21:00
nee depieje,

XML is makkelijker dan je denkt, als je je er in 1 avondje in verdiept kun je al aardig ver komen mbt het inlezen van XML in flash :). Zie mijn signature voor verdere uitleg en hier nog wat handige links:

Tijdens het zoeken naar een handig topic zie ik dat je daar al antwoord hebt gekregen van "Flasher"..

Succes verders !! :) voor vragen kun je altijd weer hier terecht he natuurlijk

depieje
%Europe/Berlin %865 %2005, 21:45
jouw signature? dat is toch enkel een verwijzing naar tut's, fla's en naar google...ik snap niet goed wat je daarmee bedoelt.

ivm xml inlezen...moet dat altijd via 'new xml' en dan de firstchilds en childnodes aanroepen?


grtz
depieje

vegeto
%Europe/Berlin %874 %2005, 21:58
mechien kan u hier vinden wat u zoekt om mee te beginen

http://www.flashfocus.nl/tutorials/XML/

depieje
%Europe/Berlin %931 %2005, 23:21
schitterend die nieuwe tutorial van Ries Twisk! Dit is wat ik zocht, maar gisteren zat die nog niet bij de tut's.....

Nu loop ik echter nog tegen een probleem aan. de knop om de taal te veranderen werkt voor de tekstvelden. de tekst van de knoppen wordt aangepast zoals het hoort. Maar ik heb een gezamenlijk tekstveld en daar zit ik met een probleem voor de inlezing...ik probeer het even te schetsen...

ik heb 3 knoppen...home, products en contact (de benaming wordt aangepast naargelang de gekozen taal)

nu heb ik een dynamisch tekstveld 'content', nu wil ik dat als er op de knop home gedrukt wordt de engelse inhoud van content wordt weergegeven en als de knop op 'start' staat (nl) dan moet de nederlandse inhoud weergegeven worden. en zo ook voor de andere buttons...

hoe pak ik dit het best aan..
iemand een idee?

oja, de tut vind je hier (http://www.flashfocus.nl/tutorials/XML/?filename=XML%20vertaal%20component_Ries%20Twisk.z ip)


grtz,
depieje

depieje
%Europe/Berlin %682 %2005, 17:23
Ik heb hier wat geëxperimenteerd rond hierbovenstaande vraag.

Ik heb een knop 'home' waar ik volgende functie opgeplaatst heb

this.home.onRelease = function(){
content.text = home_content;
trace (content.text);
}

het dynamisch tekstveld heeft de var 'content'.
in het trace-window zie ik de correcte inhoud staan maar in het tekstveld niet.


wie weet de oorzaak hiervan?

grtz,
depieje

depieje
%Europe/Berlin %921 %2005, 23:07
Niemand die reageert?

ik heb ondertussen niet stil gezeten en heb al iets uitgewerkt.

Nu werken de knoppen van de taal, en de knoppen van de menu. Telkens wordt het tekstveld aangepast. Nu heb ik echter nog een probleem...wanneer ik op een knop druk uit het menu dan wordt de correcte tekst in het tekstveld geplaatst...maar wanneer ik op de taalknop druk..dan wordt de taal wel aangepast maar dan wordt de inhoud van 'content' terug weergegeven in het tekstveld. Ik wil echter dat de tekst die op het moment dat de knop ingedrukt wordt, gewoon van taal veranderd en niet dat terug de 'home' weergegeven wordt.

iemand? pleazzzzzzzzeeeeeeee

grtz,
depieje

vegeto
%Europe/Berlin %943 %2005, 23:38
mechien is dit ook een idee

dit is met txt maar werkt ook

mateo)
%Europe/Berlin %009 %2005, 01:13
het dynamisch tekstveld heeft de var 'content'.
'content' moet de instance name van je tekstveld zijn, niet de Var :)

depieje
%Europe/Berlin %653 %2005, 16:41
'content' moet de instance name van je tekstveld zijn, niet de Var
en waarom zou dat moeten? het tekstveld wordt aangepast hoor. maar de content wordt telkens 'gereseted'.

mechien is dit ook een idee

dit is met txt maar werkt ook
Bijgesloten Bestanden
Bestandstype: zip test.zip (6,5 KB, 2x gedownload)
Dit werkt idd wel, maar dan moet ik allemaal aparte txt-bestandjes maken.
Ik zie liever een oplossing met xml.

Echt niemand?

meagain
%Europe/Berlin %790 %2005, 19:57
Waarom zou je xml-bestanden gebruiken? XML heeft zijn nut dikwijls bewezen, maar wordt te tot vervelens toe aangehaald als de oplossing voor elk probleem.

Gebruik gewoon je tekst-bestanden en een LoadVars oplossing binnen Flash, zeker als je niet gewoon bent xml te gebruiken.

LoadVars is volgens mij de gemakkelijkste oplossing, en waarschijnlijker sneller dan xml.

vegeto
%Europe/Berlin %801 %2005, 20:14
dacht ik ook

depieje
%Europe/Berlin %716 %2005, 18:12
ik ben er hier nog altijd niet aan uit...

Ik heb de mogelijkheid om loadvars te gebruiken maar het principe is me niet helemaal duidelijk. wat is het verschil van loadvar en loadvariablesnum?
hoe worden bij een loadvar de variabelen geladen..op welk niveau enz.

het principe is dus dat de taal van de knoppen moet veranderen bij het drukken op een taalknop, en dat de taal van het contentvenster wijzigt maar dat wel de knop die ingedrukt was voor de taalwijziging (home, products, contact,enz..) actief blijft.

kan iemand me hier eens een degelijke en eenduidige uitleg voor geven aub?

thx,
depieje

meagain
%Europe/Berlin %780 %2005, 19:43
Stel:

Je hebt een paar buttons waarvan het label moet worden aangepast aan de hand vd gekozen taal.

In dit geval: click1_btn en click2_btn. Wanneer nu de opdracht wordt gegeven om de taal te veranderen moet jij zorgen dat:

1. Het betreffende txt-bestand wordt 'geladen'
2. Dat alle componenten worden aangepast

Je moet wel er wel aan houden dat alle vars in het txt-bestand overeenkomen met de component-namen. In dit geval:

&click1=Click
&click2=Stop

Dan heb je een class:

class myLanguage {

static var tLabels_lv:LoadVars = new LoadVars();
static var tMC:MovieClip;

//Constructor
public function myLanguage(tMovieClip:MovieClip){
tMC = tMovieClip;
};

public function setNewLanguage(tFile:String){

tLabels_lv.load(tFile);

tLabels_lv.onLoad = function(success:Boolean) {

if (success) {
myLanguage.modifyPage(tMC);
} else {
//Zelf aanpassen
}

};

}

static function modifyPage(tMC:MovieClip){

for (var i in tMC){

if ( (tMC[i]._name.indexOf("_") != -1) && (tMC[i]._name != undefined) ){

var tArr:Array = tMC[i]._name.split("_");
//Label
if ( (tArr[1] == "label") && (tLabels_lv[tArr[0]] != undefined) ){
tMC[i].text = tLabels_lv[tArr[0]];
}
//RadioButton
if ( (tArr[1] == "rb") && (tLabels_lv[tArr[0]] != undefined) ){
tMC[i].label = tLabels_lv[tArr[0]];
}
//Button
if ( (tArr[1] == "btn") && (tLabels_lv[tArr[0]] != undefined) ){
tMC[i].label = tLabels_lv[tArr[0]];
}
//CheckBox

//ComboBox

}

}
}

}

En deze roep je aan:

var test:myLanguage = new myLanguage(this);

test.setNewLanguage("test.txt");

langListener = new Object();

langListener.click = function (evt){
if ( evt.target.selection.data == "french"){
test.setNewLanguage("test2.txt", tMc);
}else{
test.setNewLanguage("test1.txt", tMc);
}

}

language_rg.addEventListener("click", langListener);

Er wordt hier van uitgegaan dat de taalkeuze gebeurt dmv een radiogroup.

Er zijn natuurlijk nog andere oplossingen, en misschien veel betere ....

depieje
%Europe/Berlin %911 %2005, 22:51
hartelijk bedankt voor de code en de toewijding...maar ik vrees dat de boodschap niet overkomt :#

ik snap er niks van, van gans de code..dat is nu nog met een ander principe...niet met loadvars

is er geen eenvoudigere methode om dit te verwezenlijken?

is het bvb niet mogelijk om 2 txt-bestanden (text_nl en text_en)met allebei dezelfde variabelnamen te voorzien. standaard wordt de "text_en" ingeladen.Wanneer er nu op de knop 'NL' gedrukt wordt de file "text_nl" inlezen met diezelfde variabelenamen maar met andere waarden. kan dat niet verwezenlijkt worden op een eenvoudige manier?

meagain
%Europe/Berlin %759 %2005, 19:13
Dat is nu net wat mijn vb doet. Afhankelijk vd keuze wordt in mijn geval test1.txt of test2.txt geladen. Dit vervang je gewoon door text_nl, text_en, enz...

Je moet wel zorgen dat de instance-namen vd componenten overeenkomen met deze in je movie. Heb je dus een button met de naam click1_btn, dan komt dat overeen met de variabele click1 in je txt-bestand. Daar hou je je dan ook in ieder project aan. De class, die nog moet afgewerkt worden, doet de rest.

Het voordeel van classes is dat je ze in ieder project opnieuw kan gebruiken en dat je project overzichtelijk en gestructureerd blijft.

is er geen eenvoudigere methode om dit te verwezenlijken?
Heb je éénmaal door hoe het werkt zal je merken dat het een redelijk eenvoudig principe is.
ik snap er niks van, van gans de code
Tip: print de 'beperkte' code effe uit, zet je pc af en probeer het principe te begrijpen.

depieje
%Europe/Berlin %903 %2005, 22:41
ik zal me er eens mee bezig houden om die code te ontrafelen maar evident lijkt me dat niet hoor.

nog een vraagje, kan iemand me vertellen waarom deze code niet werkt?

var taal = "nl";
var home_nl = "dit is onze startpagina";
main = ["home_"+taal];
main is de var-naam van een dynamisch tekstvak.


grtz,
depieje

meagain
%Europe/Berlin %690 %2005, 17:34
Deze var zal je waarschijnlijk moeten 'evalueren':

Best op deze manier:

var taal = "nl";
var home_nl = "dit is onze startpagina";
main = _root["home_"+taal];

//of met eval()
Ongetest :S

Maar probeer dit soort 'constructies' te vermijden; maak het jezelf niet moeilijk als het makkelijker kan.