Importare traduzioni da un altro progetto

Introduzione

Questo tutorial mostra come importare traduzioni di stringhe di progetto, tramite comunicazione OPC UA, da un altro progetto. Le traduzioni sono visualizzate a runtime a seconda della localizzazione dell’utente.

Il progetto server contiene l’interfaccia utente e le traduzioni. Il progetto client è privo di interfaccia utente e si connette a runtime al server per importare l’interfaccia utente e le traduzioni dal server, da mostrare all’utente in base alla sua localizzazione.

Nota

la procedura fa riferimento a progetti con localizzazione it-IT (proprietà Localizzazioni del nodo radice di progetto).

Per realizzare la pagina di accesso nel progetto client si usa un widget predefinito di Q Studio, che ne imposta l’interfaccia utente e i meccanismi fondamentali.

Scarica i progetti di esempio da qui.

Passi

  1. Creare i progetti server e client

  2. Server: configurare l’interfaccia utente e le traduzioni

  3. Client: configurare gli utenti e predisporre l’interfaccia utente

  4. Client: configurare l’importazione

  5. Verificare il funzionamento

Creare i progetti server e client

  1. Creare un nuovo progetto standard denominato ServerProject. Il progetto contiene già un oggetto OPC UA server, che, in mancanza di impostazioni specifiche, espone tutti i nodi del progetto.

  2. Creare un altro nuovo progetto standard denominato ClientProject.

    Suggerimento

    prima di procedere, rimuovere l’oggetto Server OPC UA nella cartella di progetto OPC UA, in quanto non necessario per gli scopi di questo tutorial.

Server: configurare l’interfaccia utente e le traduzioni

  1. Nella cartella UI creare una cartella Panels. Al suo interno creare un tipo di pannello Panel1.

  2. In MainWindow creare un’etichetta Label1 (Nuovo > Controlli base > Etichetta) e inserire nella sua proprietà Testo la stringa «Ciao mondo!».

  3. Aprire il LocalizationDictionary TranslationTable1, fare clic su Visualizza Riferimenti di traduzione e sincronizzare il testo dell’etichetta Label1.

  4. Fare clic su Visualizza Tabella traduzioni e inserire la traduzione italiana «Hello world!».

  5. In MainWindow creare un oggetto Pannello dinamico denominato ServerPanelLoader. Nella sua proprietà Pannello selezionare il tipo Panel1.

  6. (Opzionale) In MainWindow creare un’etichetta Label2 che visualizza la localizzazione dell’utente di sessione. Per farlo, nella proprietà Testo impostare un collegamento dinamico con {Session}/Session/User/User/LocaleIds.

  7. (Opzionale) Per verificare che il testo dell’etichetta cambi in base all’utente corrente seguire questi passi:

    1. Nella cartella Users creare una cartella ServerUsers. Al suo interno creare due utenti Alice e Bob con localizzazione rispettivamente it-IT ed en-US.

    2. Nella cartella UI creare un oggetto Popup (Nuovo > Contenitori > Popup) denominato LoginPopup .

    3. Aprire la libreria dei template e trascinare il widget Modulo di accesso nell’oggetto LoginPopup. Nell’oggetto LoginForm1 che contiene, impostare puntare l’alias Users alla cartella ServerUsers.

    4. Nell’oggetto MainWindow creare un oggetto Pulsante con pannello (Nuovo > Contenitori > Pulsante con pannello) denominato LoginPopupButton. Nella sua proprietà Pannello selezionare l’oggetto LoginPopup.

    5. Eseguire il progetto per verificare che il testo dell’etichetta cambi in base all’utente corrente.

Client: configurare gli utenti e predisporre l’interfaccia utente

  1. All’interno della cartella Users creare una cartella ClientUsers.Al suo interno creare due utenti Alice e Bob con localizzazione rispettivamente it-IT ed en-US.

  2. Nella cartella UI creare un oggetto Popup (Nuovo > Contenitori > Popup) denominato LoginPopup .

  3. Aprire la libreria dei template e trascinare il widget Modulo di accesso nell’oggetto LoginPopup. Nell’oggetto LoginForm1 che contiene, impostare puntare l’alias Users alla cartella ClientUsers.

  4. Nell’oggetto MainWindow creare un oggetto Pulsante con pannello (Nuovo > Contenitori > Pulsante con pannello) denominato LoginPopupButton. Nella sua proprietà Pannello selezionare l’oggetto LoginPopup.

  5. In MainWindow creare un oggetto Pannello dinamico denominato ClientPanelLoader, per visualizzare a runtime il contenuto del pannello importato.

  6. In MainWindow creare un NetLogic di runtime con il codice seguente nel metodo Start(). Il NetLogic inizializza il pannello dinamico ClientPanelLoader con il pannello importato dal server:

    public override void Start()
    {
        var importedPanel = Project.Current.Get("UI/Panels/Panel1");
        if (importedPanel == null)
        {
            Log.Error("Could not find remote panel");
            return;
        }
    
        var mainWindowPanelLoader = LogicObject.Owner.Get<PanelLoader>("ClientPanelLoader");
    
        //Change panel to the imported remote panel mainWindowPanelLoader.ChangePanel(importedPanel.NodeId, NodeId.Empty);
    }
    

Client: configurare l’importazione

  1. Nella cartella OPC UA creare un oggetto Client OPC UA (Nuovo > Client OPC UA): viene creato l’oggetto ClientOpcUa1.

  2. Nella proprietà Endpoint URL server di ClientOpcUa1 inserire l’endpoint dell’oggetto Server OPC UA presente nel progetto server.

  3. Nelle proprietà di ClientOpcUa1 aggiungere due configurazioni di runtime (vedere Configurare l’importazione di nodi a runtime).

  4. Impostare proprietà della prima configurazione di runtime, per importare l’interfaccia utente:

    • Nodo destinazione locale: ClientProject/UI

    • Nodo sorgente remoto: /Objects/ProgettoServer/UI/Panels, ovvero il percorso della cartella Panels del server a runtime

    • Modalità sincronizzazione contenuto: Solo importazione

    • Includi nodo sorgente remoto: Vero

  5. Impostare proprietà della seconda configurazione di runtime, per importare le traduzioni:

    • Nodo destinazione locale: ClientProject/Translations

    • Nodo sorgente remoto: /Objects/ProgettoServer/Translations, ovvero il percorso della cartella Translations del server a runtime

    • Modalità sincronizzazione contenuto: Solo importazione

    • Includi nodo sorgente remoto: Falso

Verificare il funzionamento

Avviare nell’ordine il progetto server e il progetto client per verificare che le traduzioni siano state importate correttamente nel progetto client e che siano visualizzate a seconda della localizzazione dell’utente di sessione.