faqts : Computers : Programming : Languages : Bbcbasic

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

Entry

BBCBASIC: Windows: How to possibly input yes and no in different natural languages?

Apr 23rd, 2006 13:08
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 23 April 2006 - 08:01 pm ----------------------

BBCBASIC: Windows: How to possibly input yes and no in different 
natural languages?

---

Because the total amount of data (e.g. the foreign language 
information might grow or change)
might vary, it is best to separate the data from your procedures.
You could then e.g. read your DATA from a file (so completely external
from your program).

---

Steps: Overview:

 1. E.g. create the following program

--- cut here: begin --------------------------------------------------

REM --- MAIN --- REM

PROCLanguageGetNaturalData

:

REPEAT

 READ languageNaturalName$, question$, yes$, no$

 stopB% = FNStringCheckEqualCaseInsensitiveB( 
languageNaturalName$, "End" )

 IF NOT stopB% THEN PRINT FNStringGetInputYesB( languageNaturalName$, 
question$, yes$, no$ )

UNTIL stopB%

END

:

REM --- LIBRARY --- REM

:

REM library: language: get: natural: data (filenamemacro=getlanda.bbc) 
[kn, ri, su, 23-04-2006 19:22:53]

DEF PROCLanguageGetNaturalData

DATA "Danish",         "Fortsette",      "Ja",        "Nej"

DATA "Dutch",          "Verdergaan",     "Ja",        "Nee"

DATA "English",        "Continue",       "Yes",       "No"

DATA "Finnish",        "Continue",       "Joo",       "Ei"

DATA "French",         "Continuer",      "Oui",       "Non"

DATA "German",         "Fortsetzen",     "Ja",        "Nein"

DATA "Hungarian",      "Folytat",        "Igen",      "Nem"

DATA "Italian",        "Continuare",     "Si",        "Non"

DATA "Norwegian",      "Fortsette",      "Ja",        "Nei"

DATA "Portuguese",     "Continuar",      "Sim",       "Nao"

DATA "Russian",        "Prodolsjat",     "Da",        "Het"

DATA "Serbo-Croatian", "Nastaviti",      "Da",        "Ne"

DATA "Spanish",        "Continuar",      "Si",        "No"

DATA "Swedish",        "Forts<a..>tta",  "Ja",        "Nej"

DATA "End",            "End",            "End",       "End"

ENDPROC

:

REM library: string: check: equal: case: insensitive 
(filenamemacro=checstci.bbc) [kn, ri, su, 23-04-2006 17:51:20]

DEF FNStringCheckEqualCaseInsensitiveB( s1$, s2$ )

 REM e.g. PRINT FNStringCheckEqualCaseInsensitiveB( "Test", "test" ) : 
REM gives TRUE, because "Test" equals "test" if you do not look if 
upper or lower case

 REM e.g. END

 REM e.g. :

 REM e.g. :

 REM e.g. :

= FNStringCheckEqualB( FNStringGetCaseUpperS( s1$ ), 
FNStringGetCaseUpperS( s2$ ) )

:

REM library: string: get: input: yes (filenamemacro=getstiye.bbc) [kn, 
ri, su, 23-04-2006 19:07:57]

DEF FNStringGetInputYesB( languageNaturalNameInput$, question$, yes$, 
no$ )

 REM e.g. PROCLanguageGetNaturalData

 REM e.g. :

 REM e.g. REPEAT

 REM e.g.  READ languageNaturalName$, question$, yes$, no$

 REM e.g.  stopB% = FNStringCheckEqualCaseInsensitiveB( 
languageNaturalName$, "End" )

 REM e.g.  IF NOT stopB% THEN PRINT FNStringGetInputYesB( 
languageNaturalName$, question$, yes$, no$ )

 REM e.g. UNTIL stopB%

 REM e.g. END

 REM e.g. :

 LOCAL answer$

 PRINT; question$ + " " + "(" + FNStringGetCaseUpperS( 
FNStringGetCharacterFirstS( yes$ ) ) + "/" + FNStringGetCaseLowerS( 
FNStringGetCharacterFirstS( no$ ) ) + ")" + " ";

 INPUT; answer$

= FNStringCheckEqualCaseInsensitiveB( FNStringGetCharacterFirstS( 
answer$ ), FNStringGetCharacterFirstS( yes$ ) )

:

REM library: string: check: equal (string1 equal to string2?) 
(filenamemacro=checstce.bbc) [kn, ri, we, 09-05-2001 19:47:51]

DEF FNStringCheckEqualB( s1$, s2$ )

 REM e.g. PRINT FNStringCheckEqualB( "test", "test" ) : REM gives 
true, because "test" equals "test"

 REM e.g. END

 REM e.g. :

 REM e.g. :

 REM e.g. :

= s1$ = s2$

:

REM library: string: get: case: upper (convert characters in string to 
upper case) (filenamemacro=getstcuq.s) [kn, zoe, wo, 30-06-1999 
01:21:07]

DEF FNStringGetCaseUpperS( s$ )

 REM e.g. PRINT( FNStringGetCaseUpperS( "this is a test" ) ) : REM 
gives e.g. "THIS IS A TEST"

 REM e.g. END

 REM e.g. :

 REM e.g. :

 REM e.g. :

 PROCLibraryInstallString

 = FNupper( s$ )

ENDPROC

:

REM library: string: get: character: first (string: character: token: 
get: first: return the first single character in the given string) 
(filenamemacro=getstcfi.bbc) [kn, ri, wo, 24-03-1999 23:21:02]

DEF FNStringGetCharacterFirstS( s$ )

 REM e.g. PRINT; FNStringGetCharacterFirstS( "knud" ) : REM gives "k"

 REM e.g. PRINT; FNStringGetCharacterFirstS( "the" ) : REM gives "t"

 REM e.g. END

= FNStringGetCharacterS( s$, 1 )

:

REM library: string: get: case: lower (convert characters in string to 
lower case) (filenamemacro=getstclo.bbc) [kn, zoe, wo, 30-06-1999 
01:21:07]

DEF FNStringGetCaseLowerS( s$ )

 REM e.g. PRINT( FNStringGetCaseLowerS( "this is a test" ) ) : REM 
gives e.g. "THIS IS A TEST"

 REM e.g. END

 REM e.g. :

 REM e.g. :

 REM e.g. :

 PROCLibraryInstallString

 = FNlower( s$ )

:

REM library: library: install: string (filenamemacro=instliis.bbc) 
[kn, ri, su, 23-04-2006 19:52:18]

DEF PROCLibraryInstallString

 REM e.g. PROCLibraryInstallString

 REM e.g. END

 REM e.g. :

 REM e.g. :

 REM e.g. :

 INSTALL @lib$+"FNUsing"

ENDPROC

:

REM library: string: character: token: get: return the character in 
the given string on the given position [kn, ri, vr, 25-12-1998 
23:35:43]

DEF FNStringGetCharacterS( s$, positionT% )

 REM e.g. PRINT; FNStringGetCharacterS( "knud", 3 ) : REM gives "u"

= FNStringGetMidStringS( s$, positionT%, 1 )

:

REM library: string: word: token: get: middle: return a given integer 
amount of characters from the a given startposition (=MID$ in BASIC) 
[kn, ri, di, 13-10-1998 20:29:00]

DEF FNStringGetMidStringS( s$, beginT%, totalT% )

REM e.g.  PRINT; FNStringGetMidStringS( "knud", 2, 3 ) ) : REM 
gives "nud"

REM e.g.  PRINT; FNStringGetMidStringS( "knud", 3, 2 ) ) : REM  
gives "ud"

REM e.g. END

= MID$( s$, beginT%, totalT% )

--- cut here: end ----------------------------------------------------

 2. -If will read the example data for e.g. 14 different natural 
languages

 3. -It puts to upper case the first character of the yes string 
(e.g. 'Y'es)
     it puts to lower case the first character of the no string, and 
concatenates
     this to your question string.

 4. -It takes the first character input and compares this case 
insensitive to the
     first character of the "yes" string of your natural language

     1. -If this characters are equal, the function returns TRUE,
         otherwise FALSE

 5. -Run the program

 6. -That will show a screen output similar to the following:

--- cut here: begin --------------------------------------------------

Fortsette (J/n) J
        -1

Verdergaan (J/n) J
        -1

Continue (Y/n) Y

        -1

Continue (J/e) J
        -1

Continuer (O/n) O
        -1

Fortsetzen (J/n) J
        -1

Folytat (I/n) n
         0

Continuare (S/n) n
         0

Fortsette (J/n) j
        -1

Continuar (S/n) N
         0

Prodolsjat (D/h) H
         0

Nastaviti (D/n) D
        -1

Continuar (S/n) s
        -1

Forts<a..>tta (J/n) n
         0

--- cut here: end ----------------------------------------------------

===

Internet: see also:

---



----------------------------------------------------------------------