Anzeige:
Ergebnis 1 bis 3 von 3

Thema: [QT4/c++] Locale unterschiede von linux zu windows und mac

  1. #1
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255

    [QT4/c++] Locale unterschiede von linux zu windows und mac

    Ich lade beim start meine Translation Datei.
    Unter Linux kann ich ja mit getenv() die Lokalisierung des Systems ermitteln.
    Leider habe ich kein Windows und kann jetzt nicht nachsehen wie es dort Funktioniert.

    Meine Frage kann ich das so machen das es auch unter Windows und Mac geht?
    Oder muss ich eine andere Lösung verwenden.

    PHP-Code:
    #include <stdlib.h>

    #include <QtCore>
    #include <QApplication>
    #include <QMessageBox>
    #include <QSplashScreen>

    #include "QSpokecalculator.h"

    int main(int argcchar *argv[])
    {
            
    Q_INIT_RESOURCE(qspokecalc);
            
    QT_REQUIRE_VERSIONargcargv"4.1.4" )

            
    QApplication app(argcargv);

            
    // Get Application Main Directory
            
    QString  SplashPathQCoreApplication::applicationDirPath() );
            
    SplashPath.appendQDir::separator() );

            
    // Setting Locale Path
            
    QString lcpSplashPath );
            
    lcp.append"locale" );

            
    // Complite Splash path
            
    SplashPath.append"QSpokecalc.png" );

            
    // FIXME Windows/Mac ?
            
    QString setLanggetenv"LANG" ) );
            
    setLang setLang.toLower();
            
    setLang setLang.replaceQRegExp"(_.+)*$" ), "" );
            
    setLang.prepend("qspokecalc_");
            
    setLang setLang.toLocal8Bit();

            
    // init locale
            
    QTranslator translator(0);
            
    translator.loadsetLanglcp"_" );
            
    app.installTranslator(&translator);

            
    // display notification for help users to rename the qspokecalc_*.qm
            
    std::cout << "Search for Locale: " << setLang.toStdString() << ".qm" << std::endl;

            
    QPixmap pixmapSplashPath );
            
    QSplashScreen *splash = new QSplashScreen(pixmap);
            
    splash->show();

            
    splash->showMessageQObject::trUtf8"Loading Databases ..." ), Qt::AlignCenter Qt::AlignVCenterQt::white );
            
    qApp->processEvents();

            
    QSpokecalculator mainWin;

            
    splash->showMessageQObject::trUtf8"Start QSpokecalc ..." ), Qt::AlignCenter Qt::AlignVCenterQt::white );
            
    qApp->processEvents();

            
    mainWin.show();

            
    splash->finish( &mainWin );
            
    delete splash;
            return 
    app.exec();

    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hast du Zugang zu den anderen Plattformen?

    Wenn ja könntest du folgendes dort probieren:

    Code:
    #include <iostream>
    #include <locale>
    
    int main()
    {
        std::locale current = std::locale("");
        std::cout << "current locale: '" << current.name() << "'" << std::endl;
    
        return 0;
    }
    Edit: hmm unter Windows scheint das wiedermal anders zu sein, da kommt statt einem der üblichen Locale String etwas wie "Germany_Germany.1252"

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ich habe jetzt auf meinem Rechner winxp home installiert und genau das gleiche Problem. Auf meinem Schleppi habe ich es auch aufgespielt aber mit Mingw Full und QT 4.1.4 - hier funktioniert es ( getenv("LANG") ). Bleibt mir wohl nichts anderes übrig als die Sprach Einstellungen in die Settings auf zu nehmen Das dürfte die Sicherste Methode sein.
    Geändert von undefined (10-08-2006 um 11:11 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •