viewing paste Language test script | Athena

Posted on the | Last edited on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
-       script  pick_language   -1,{ // This serves as a basic language picker, but will not be very useful
OnPCLoginEvent:
        function i18n; // i18n is short for internacionalization
        if (language) end; // People who have chosen a language don't need to use this NPC, other will fall through
       
OnWhisperGlobal: //This way people can change their language at any time, even if this makes this code messy
 
        do {
                mes i18n(5);
                mes i18n(6);
                mes i18n(7);
                mes i18n(8);
                set language, prompt(i18n(1)+":"+i18n(2)+":"+i18n(3)+":"+i18n(4)); // Chosen option will be user's language ID
        } while (@menu == 255); // Force user to pick one of the available languages
        close;
       
        function i18n { // Each NPC will have its own i18n function. This one is quite simple.
                switch(getarg(0)) {
                        case 1: return "English";
                        case 2: return "Français (French)";
                        case 3: return "Español (Spanish)";
                        case 4: return "Deutsch (German)";
                        case 5: return "Please choose a language";                     // English
                        case 6: return "Veuillez choisir une langue s'il vous plaît";  // French
                        case 7: return "Por favor, elige un idioma";                   // Spanish
                        case 8: return "Bitte Sprache auswählen";                      // German
                        default: return "Unknown message string ID";
                }
                /* Alternate version: this one is faster but it's a bit harder to understand
                setarray .@i18n[1]$,                                // Maybe this array should better be set OnInit with a permanent NPC variable, but it's just an example
                                                                                                                        // In that case, just the return sentence is needed
                        "English",
                        "Français (French)",
                        "Español (Spanish)",
                        "Deutsch (German)",
                        "Please choose a language",                     // English
                        "Veuillez choisir une langue s'il vous plaît",  // French
                        "Por favor, elige un idioma",                   // Spanish
                        "Bitte Sprache auswählen";                      // German
                set .@numStrings, getarraysize(.@i18n$);
                return getarg(0) < .@numStrings ? .@i18n[getarg(0)] : "Unknown message string ID";
                */
        }
}
 
map,x,y script  language_tester 60,{ // You can use this when you have your language defined, a bit more complex but easier at the same time
        function i18n;
        set @times, @times+1;
        mes i18n(language,1);
        mes i18n(language,2) + @times + i18n(language,4); // i18n(language,2) has a trailing space, and i18n(language,3) has a leading space
        close;
       
        function i18n {
                switch(getarg(0)) { // Languages
                        case 1: // English
                                switch(getarg(1)) { // Strings
                                        case 1: return "This is a language test script.";
                                        case 2: return "You've clicked me ";
                                        case 3: return " times since you logged in.";
                                        default: return "String Error";
                                } // Supposedly no break needed
                        case 2: // French
                                switch(getarg(1)) {
                                        case 1: return "Ç'est un script de teste de langue.";
                                        case 2: return "Vous m'avez cliqué ";
                                        case 3: return " fois depuis vous êtes online.";
                                        default: return "Ereur de string";
                                }
                        case 3: // Spanish
                                switch(getarg(1)) {
                                        case 1: return "Esto es un script de prueba de idiomas.";
                                        case 2: return "Me has hecho click ";
                                        case 3: return " veces desde que te has conectado.";
                                        default: return "Error de string";
                                }
                        case 4: // German
                                switch(getarg(1)) {
                                        case 1: return "Die ist ein Sprachen Test NPC.";
                                        case 2: return "Du hast mich ";
                                        case 3: return " mal angeklickt seit du online bist.";
                                        default: return "String Fehler";
                                }
                        default: // Language error
                                return "Language error!";
                }
       
        // You could also do something similar: you store an array of array names, then fetch the desired position on that array if you do like that.
        }
}
Viewed 650 times, submitted by jaBote.