Microsoft Small Basic

Program Listing: SCB458
' International Hello World
' Copyright (c) 2014 Nonki Takahashi. MIT License.
'
title = "International Hello World"
GraphicsWindow.Title = title
Init()
Main()
Sub Init
gw = 598
gh = 428
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
nLang = 20
db[1] = "lang=العربية;en=Arabic;msg=!مرحبا بالعالم;"
db[2] = "lang=中文(简体);en=Chinese (Simplified);msg=你好世界!;"
db[3] = "lang=中文(繁體);en=Chinese (Traditional);msg=你好世界!;"
db[4] = "lang=hrvatski;en=Croatian;msg=Hello World!;"
db[5] = "lang=čeština;en=Czech;msg=Hello World!;"
db[6] = "lang=Nederlands;en=Dutch;msg=Hallo Wereld!;"
db[7] = "lang=English;en=English;msg=Hello World!;"
db[8] = "lang=français;en=French;msg=Bonjour le monde!;"
db[9] = "lang=Deutsch;en=German;msg=Hallo Welt!;"
db[10] = "lang=מילת עברית;en=Hebrew;msg=!שלום לך עולם;"
db[11] = "lang=Icelandic;en=Icelandic;msg=Halló heimur!;"
db[12] = "lang=italiano;en=Italian;msg=Ciao mondo!;"
db[13] = "lang=日本語;en=Japanese;msg=こんにちは世界!;"
db[14] = "lang=한국어;en=Korean;msg=세계 안녕하세요!;"
db[15] = "lang=polski;en=Polish;msg=Witaj świecie!;"
db[16] = "lang=Português (Brasil);en=Portuguese (Brazil);msg=Olá Mundo!;"
db[17] = "lang=Português (Portugal);en=Portuguese (Portugal);msg=Olá Mundo!;"
db[18] = "lang=русский;en=Russian;msg=Здравствуй, мир!;"
db[19] = "lang=español;en=Spanish;msg=¡Hola Mundo!;"
db[20] = "lang=Türkçe;en=Turkish;msg=Merhaba Dünya!;"
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FontName = "Arial"
lang = Shapes.AddText("")
GraphicsWindow.FontSize = 30
For i = 1 To nLang
order[i] = i
db[i]["obj"] = Shapes.AddText(db[i]["msg"])
Shapes.SetOpacity(db[i]["obj"], 0)
EndFor
EndSub
Sub Main
For l = 255 To 108 Step -11
GraphicsWindow.BackgroundColor = GraphicsWindow.GetColorFromRGB(l, l, 255)
Program.Delay(200)
EndFor
While "True"
For i = 1 To nLang
x = gw
y = 0
GraphicsWindow.Title = title + " - " + db[order[i]]["en"]
Shapes.Move(db[order[i]]["obj"], x, y)
Shapes.SetOpacity(db[order[i]]["obj"], 100)
Shapes.SetText(lang, "")
If order[i] = 1 Then
Shapes.Move(lang, gw - 40, gh - 24)
ElseIf order[i] = 10 Then
Shapes.Move(lang, gw - 70, gh - 24)
Else
Shapes.Move(lang, 10, gh - 24)
EndIf
If order[i] = 1 Or order[i] = 10 Then
x1 = -200
x2 = gw
Else
x1 = gw
x2 = -200
EndIf
Shapes.SetText(lang, db[order[i]]["lang"])
For t = 0 To 10 Step 0.1
x = (10 - t) / 10 * x1 + t / 10 * x2
y = (10 - t) / 10 * gh
o = (10 - t) * 10
s = t / 3
Shapes.Move(db[order[i]]["obj"], x, y)
Shapes.SetOpacity(db[order[i]]["obj"], o)
Shapes.Zoom(db[order[i]]["obj"], s, s)
Program.Delay(100)
EndFor
Shapes.Zoom(db[order[i]]["obj"], 1, 1)
EndFor
EndWhile
EndSub