German Hilfe bei mehrsprachiger App

Anne

Member
Licensed User
Hallo Ihr Marketing-Fachleute

Ich bin mit der ersten App so weit, dass ich sie vermarkten will. Beschreibung und Programm in je 2 Sprachen (deutsch und englisch) sind ok und laufen.
Ich habe mich entschlossen nicht beide Sprachen in einem Programm zu verwurschteln, denn das macht den Source Code furchtbar unübersichtlich: Jede Warnung, jeder Fehler: immer muss ich zuvor abfragen. Ich habe auch versucht, eine Textdatei zu erstellen, die gleich heisst in englisch wie in deutsch und die dann im First-Zweig erst einmal geladen wird. Das ist eine elegante Lösung, man kann relativ einfach weitere Sprachen dazu nehmen. Aber!!! Bei jeder Erweiterung und jedem Update sind alle Sprach-Versionen mitzuziehen.
Darum sind alle Texte bis jetzt in sep. Programmen fix codiert, ich kann also Sprache für Sprache updaten, zusammen mit Userbeschreibungen und was sonst noch alles anfüllt. Auch Printscreens müssen ja separat bereit gestellt werden, ich glaube kaum, dass ein Deutscher mit Printscreens aus der französchischen oder englisch Version zufrieden wäre.
Am einfachsten wären verschiedene Apps, aber dann muss ich für jede App zahlen und das bei jedem Provider. Nicht sehr günstig. Wie haltet ihr das so mit der Mehrsprachigkeit?
Grüessli von Anne

P.S. Das Script über "Die App vermarkten" habe ich schon vor mir liegen. Aber sie lässt für mich mehr Fragen offen, als dass sie beantwortet, z.B. Warum 4 verschiedene Logos in 4 verschiedenen Auflösungen? Oder wofür die Printschreens? Wenn man das schon mal gemacht hat, weiss man's.
 

Amalkotey

Active Member
Licensed User
Hallo Anne,

für merhrsprachige Apps verwende ich die AHLocale Library von Corwin42. Bei der Lib sind Demos dabei.

Ich biete meine Apps zweisprachig an: Deutsch (Standard) und Englisch.

Hier ein Beispiel, wie das funktioniert:

B4X:
Sub InitializeLanguage
   Locale.Initialize
   If Locale.Language = "de" Then
      Trans.Initialize2(File.DirAssets, "ScreenOn", "de")
   Else
      If File.Exists(File.DirAssets, "ScreenOn_" & Locale.Language & ".lng") = True Then
         Trans.Initialize2(File.DirAssets, "ScreenOn", Locale.Language)
      Else
         Trans.Initialize2(File.DirAssets, "ScreenOn", "en")
      End If
   End If
End Sub

B4X:
Sub SetGUILanguage
   Try
      Dim imgPaypal As Bitmap
      Dim imgCopyright As Bitmap
      Dim imgLocker As Bitmap

      imgPaypal.Initialize(File.DirAssets, "paypal.png")
      imgCopyright.Initialize(File.DirAssets, "copyright.png")
      imgLocker.Initialize(File.DirAssets, "lockerapp.png")

      Global.cMessage = Global.Trans.GetText("999")
      lblCRText.Text = Global.Trans.GetText("10")
      lblOption.Text = Global.Trans.GetText("20")
      lblCheckText.Text  = Global.Trans.GetText("30")
      lblAccess.Text = Global.Trans.GetText("70")
      lblCheckAccess.Text = Global.Trans.GetText("40")

      btnExit.Text = Global.Trans.GetText("60")

      Activity.AddMenuItem2(Global.Trans.GetText("100"), "mnuCopyright", imgCopyright)
      Activity.AddMenuItem2(Global.Trans.GetText("110"), "mnuPaypal", imgPaypal)
      Activity.AddMenuItem2(Global.Trans.GetText("120"), "mnuLocker", imgLocker)
   Catch
      ' Fehlermitteilung
   End Try
End Sub

Hier der Languagefile:

B4X:
//Language-File for
// esdaSO's ScreenON-Widget for Android
// Last edit: 21.03.2013

/*
  Ae=\u00C4
  ae=\u00E4
  Oe=\u00D6
  oe=\u00F6
  Ue=\u00DC
  ue=\u00FC
  ss\u00DF
*/

// Activity: Main
10=Copyright und alle Rechte reserviert bei\:
20=\ Display\:
30=Display bleibt immer an!
40=... \u00FCber den Infobereich
60=Speichern
70=\ Deaktivieren\:

// Pulldown-Menue
100=Informationen
110=Spende
120=Locker suchen

// CustomTaost-Message
210=ScreenOn Service wird gestartet!
220=ScreenOn Service wird beendet!
230=Installierte Apps werden ermittelt!
240=L\u00F6sche ErrorLog-Datei!

// Dialog for sending error log file
310=Es wurde eine Error-Logdatei gefunden. Soll die Logdatei per eMail an den App-Entwickler gesendet werden?
320=Ihre eMail-Adresse
330=eMail-Adresse verwenden?
340=Ja
350=L\u00F6schen
360=Nein

// Notification-Message
999=Verhindert das Ausschalten des Displays!

Ich hoffe, das Du damit etwas anfagen kannst.
 
Last edited:

Anne

Member
Licensed User
Hoi Amalkotey und geri

Geri, ich kann eigentlich sehr gut englisch, ich war auch zuerst im englischen Forum, aber schreiben kann ich sehr viel besser auf deutsch, besonders wenn ich etwas ganz genau beschreiben will. Darum hat mir dein Beispiel sehr viel gebracht. Ich habe es im Unterverzeichnis SourceCode gespeichert, auch für weiteren Gebrauch.

Amalkotey, ob mein Englisch so gut ist wie deines, weiss ich nicht. Ich war jedenfalls sehr überrascht, dass du deutsch kannst. Hoffentlich bist du nicht sehr enttäuscht, dass ich die von dir genannte Bibliothek bereits in meinem Programm aktiviert habe. Nicht für die Mehrsprachigkeit von Texten, sondern für die Darstellung von "Datümer". Die kann man nämlich nur dann vernünftig sortieren, wenn man sie in der Form JJJJMMTT speichert. Auch "between" ist nicht möglich, wenn man nur den simplen eingegebenen Text recherchiert. Da die Amerikaner eine völlig verquere Darstellung von einem Datum haben MM/TT/JJJJ und die Engländer TT-MM-JJJJ, muss ich neben der Sprache auch die Herkunft des Users wissen, um ein Datum zu erkennen.
Aber ich werde deine Routine angepasst für meine Mehrsprachigkeit verwenden. Ursprünglich wollte ich für jede Sprache eine seprate App erstellen, aber meine "Regierung" hat mich darüber aufgeklärt, dass man das so nicht macht. Ich danke dir recht herzlich für deine viele Arbeit. Irgendwann kann ich vielleicht auch dir einmal einen Stein in deinen Garten werfen.
Ich wollte dich eigentlich nicht zu Hochleistungen antreiben, sondern nur wissen: wie macht ihr das mit der Mehrsprachigkeit, wenn ihr die App in z.B. den Google Market bringen wollt? Die Antwort hast du auch so geliefert. Ich würde dir gern ein icon schenken, aber ich kann mit den Dingern nicht so viel anfangen, bin wahrscheinlich nicht mehr jung genug.
Darum ohne Icon: vielen Dank und herzliche Grüsse aus der (fast) sonnigen Schweiz. Anne
 
Top