Forums

OverviewFelgo 2 Support (Qt 5) › Internationalization issue

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #19364

    Carmelo

    Hello,

    I’m in trouble with translations. I write an app wit all qsTr in Italian and i want to translate my app in english and other languages.

    If i create an en_EN.qm it load successfully and app starts in English but i don’t want it. My os (Android and iOS) are in Italian but app don’t want to change lang. I try to create an it_IT.qm and a en_US instead of en_EN but it wont work.

    I have done these steps:

    • I write my app with all qsTr(“labels”) in Italian
    • I generate a en_EN.ts file in “qml/translations”
    • I released a en_EN.qml file in “qml/translations” and add it in resources.qrc
    • I run the app and all labels are now in english but my os is in Italian
    • I set translation.useSystemLanguage = true
    • After a restart and reinstall app is still in English
    • i try settings.language = ‘it_IT’ but app is still English
    • After settings.language = ‘it_IT’ console.log(settings.language) is ‘en_EN
    • If I delete en_EN and provide a it_IT.qm file and en_US.qm file, console.log(settings.language) is undefined and if i do settings.language=’whatever’, settings.language is still undefined.

    What i’m doing wrong?

    Thanks for any help.

    #19366

    Günther
    Felgo Team

    Hi,

    Did you also add, generate and release translations for your chosen language (it_IT).
    The default language is used as fallback for any other languages.

    You can find more information about localization and translation in this guide:
    https://felgo.com/doc/howto-multi-language/

    For setting the language, you can choose to either:

    • use the system language or
    • set a custom language

    This means that a custom settings.language setup only works when translation.useSystemLanguage is set to false.

    To use your translation files, please make sure to specify valid translations in the *.ts files, e.g.:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE TS>
    <TS version="2.1" language="en_US">
      <context>
        <name>Main</name>
        <message>
          <location filename="../Main.qml" line="15"/>
          <source>Hello World</source>
          <translation>Hello World</translation>
        </message>
      </context>
    </TS>

    When testing if the translations work, please also make sure to create a fresh and clean build:

    • ​Remove previous builds from your device / file system
    • Remove the shadow build directory
    • Right-click the project in Qt Creator and select “Clean”, followed by “Run qmake”
    • Generate translations with lrelease tool.
    • Build and Run your project

    Do translations then work for you?
    ​​
    ​Hope this helps!

    ​Best,
    ​Günther

    #19368

    Carmelo

    Thank you.

    useSystemLanguage = false fix it!

    I do this trick to start with OS lang:

    • On startup:
    translation.useSystemLanguage = false;
     
    if(!settings.getValue("langSettedInApp")){
       settings.language = Qt.locale().name;
    }

     

    • and in my app settings:
    settings.language = 'en_EN'; // locale chosen by user
    settings.setValue("langSettedInApp",true);

     

     

     

    #19950

    GeroldMeisinger

    How do you make this work in Felgo Live? Translations work on device and desktop but not in the simulator.

     

    GameWindowApplicationWindow
    {
        Component.onCompleted:
        {
            console.log( "GameWindowApplicationWindow.onCompleted" )
            translation.useSystemLanguage = false
            settings.language = "en_EN"
            console.log( "language is " + settings.language )
        }
    }
    

    Output is “language is”, thus settings.language is undefined?

    #19970

    Günther
    Felgo Team

    Hi Gerold,

    due to how Translations work with Qt, it is required to compile translations with the app binary. As the Felgo Live Client is a pre-built viewer for your app, it does not contain your translation binaries.

    However, you can also create your own Live Client app. This allows to compile custom C++ code or translations of your project into your own Live Client. These are then available when previewing the QML UI code with your custom Live Client.

    See here for a guide how to build your own Live Client: https://felgo.com/updates/release-2-16-1-live-code-reloading-with-custom-c-and-native-code-for-qt

     

    Best,
    Günther

Viewing 5 posts - 1 through 5 (of 5 total)

RSS feed for this thread

You must be logged in to reply to this topic.

Voted #1 for:

  • Easiest to learn
  • Most time saving
  • Best support

Develop Cross-Platform Apps and Games 50% Faster!

  • Voted the best supported, most time-saving and easiest to learn cross-platform development tool
  • Based on the Qt framework, with native performance and appearance on all platforms including iOS and Android
  • Offers a variety of plugins to monetize, analyze and engage users
FREE!
create apps
create games
cross platform
native performance
3rd party services
game network
multiplayer
level editor
easiest to learn
biggest time saving
best support