Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XAML gestützte Lokalisierung
Omit
myCSharp.de - Member

Avatar #avatar-2748.jpg


Dabei seit:
Beiträge: 146

Themenstarter:

XAML gestützte Lokalisierung

beantworten | zitieren | melden

Hallo Leute,

ich probiere zur Zeit eine Lokalisierung umzusetzten, die komplett in XAML stattfindet. Ich finde zu Lokalisierung im Internet nur Beiträge zu Lokalisierung mittels LocBaml. Doch ich will das ganze in XAML generieren. Kennt jemand da einen weg?

Gruß Timo
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Lagere alle Texte in eine eigene Ressourcen-Datei aus.
Anschließend kannst du die Ressourcen in deiner Anwendung durch ein neues ResourceDictionary austauschen und somit die Sprache ändern.
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
Omit
myCSharp.de - Member

Avatar #avatar-2748.jpg


Dabei seit:
Beiträge: 146

Themenstarter:

beantworten | zitieren | melden

Ok, danke erstmal. Hab ich mir schon so ähnlich vorgestellt!

Gruß Timo
private Nachricht | Beiträge des Benutzers
t-master
myCSharp.de - Member



Dabei seit:
Beiträge: 181

beantworten | zitieren | melden

Alternativ könnte ich dir bei Interesse auch eine Lösung per xml bieten, die man auch per Binding benutzten kann, àla:
<TextBlock Text="{Loc key_string}"/>
Die Vorteile wären, dass man die Dateien jederzeit auch als User ändern kann und dass, falls das Programm Plugins hat, jedes Plugin für jede Sprache eine eigene XML mitbringen kann.
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo Omit,

vielleicht interessiert dich auch der Webcast: Advanced WPF (Teil 4-6) - Lokalisierung
private Nachricht | Beiträge des Benutzers
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

beantworten | zitieren | melden

Also mich würde die Lösung via

<TextBlock Text="{Loc key_string}"/>
doch eher interessieren, da ich auch Plugins verwende ;)
Mit freundlichen Grüßen
Felix
private Nachricht | Beiträge des Benutzers
mctimotheus
myCSharp.de - Member



Dabei seit:
Beiträge: 181
Herkunft: Rheinland-Pfalz

beantworten | zitieren | melden

Hallo,

könnte jemand die Lösung von t-master mal genauer erläutern?

Liebe Grüße,

MCT
Wer nicht wagt .. der nicht gewinnt .. !
private Nachricht | Beiträge des Benutzers
EgoFelix
myCSharp.de - Member



Dabei seit:
Beiträge: 38

beantworten | zitieren | melden

Na klar, habs mittlerweile auch selber gebaut :)


using System;
using System.Windows.Markup;


// Register this namespace for easy usage
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "Localization")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2007/xaml/presentation", "Localization")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2008/xaml/presentation", "Localization")]

namespace Localization
{
    [MarkupExtensionReturnType(typeof(string))]
    public class Loc : MarkupExtension
    {
        public String Key
        {
            get;
            set;
        }

        public Loc()
        {
            this.Key = "";
        }

        public Loc(String key)
        {
            this.Key = key;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            // return the value via static method
            return GetValue(Key);
        }

        public static string GetValue(string key)
        {
            // return value
            return "Dein Key lautet " + key;
        }


    }
}

Das ganze kannst du natürlich auch für MessageBoxen im CodeBehind nutzen. Einfach Loc.GetValue("Dein Key") nutzen!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EgoFelix am .
Mit freundlichen Grüßen
Felix
private Nachricht | Beiträge des Benutzers
martinO
myCSharp.de - Member



Dabei seit:
Beiträge: 166

beantworten | zitieren | melden

Hallo zusammen

Nun ist .NET 4 RC veröffentlicht und man hat im Vorfeld ja gesagt, dass die Lokalisierung überarbeitet werden sollte (da sie ja ziemlich umständlich war/ist via LocBaml etc...). Weiss jemand etwas von Neuerungen gegenüber .net 3.5?

Hat jemand ein grösseres Projekt bereits mit Internationalisierung durchgeführt? Und wenn ja - habt ihr die Localization selbst geschrieben, LocBaml oder sonstwas verwendet? Ich möchte das Rad nicht neu erfinden.. ;)

merci
private Nachricht | Beiträge des Benutzers
Briefkasten
myCSharp.de - Member

Avatar #avatar-1523.gif


Dabei seit:
Beiträge: 444

beantworten | zitieren | melden

Hallo,
http://wpftutorial.net/LocalizeMarkupExtension.html hier wird ebenfalls, eine Lösung zur Lokalisierung gezeigt. Ich setze diese ebenfalls in meinen Projekten ein.

Über eine Markup Extension wird der richtige Wert aus einer Resource Date geladen und angezeigt.
Schaut mal im IRC vorbei:
Server: irc.de.quakenet[email protected]#c#.de oder [email protected]#csharp
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1620

beantworten | zitieren | melden

Markup Extension ist viel zu umständlich. Wozu?
Man packt die Strings in eine Resource Dictionary und Bindet mit DynamicResource, dann Wechselt der String auch automatisch wenn man die Resource wechselt.

Hab derzeit leider zu wenig Zeit meine Artikelserie weiter zu schreiben:

Localization: The misunderstandings
Localization: Is your application ready for? A checklist
Die Serie fängt dann mit einer einfachen Simplen Übersetzung an und geht bis hin zum vollständigen Lokalisieren.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid14268 am .
private Nachricht | Beiträge des Benutzers
martinO
myCSharp.de - Member



Dabei seit:
Beiträge: 166

beantworten | zitieren | melden

Vielen Dank für die Inputs. Ich werde sicher beide mal testen - sind ja sehr unterschiedlich.

@CSL: Ich warte gespannt auf deine weiteren Blogeinträge bezüglich Localization... Wie du die Resourcen verwaltest, würde mich als nächstes sehr interessieren ;)
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1620

beantworten | zitieren | melden

Wie schon geschrieben, derzeit habe ich leider zu wenig Zeit.
Vorne weg kann ich schon sagen das bei der einfachsten Übersetzung lediglich die übersetzten ResourceDictionaries an den MergedDictionaries an gehangen werden (so bleibt auch eine Fallback-Kette bestehen) wogegen die richtige Lokalisierung für jede Sprache eigene Sattelite Assemblies mit führt, diese beinhalten dann die Strings und die Lokalisierten Oberflächen.
Von Verwaltung kann man nicht wirklich Sprechen da es viel zu simpel ist als das man etwas verwalten müsste.
private Nachricht | Beiträge des Benutzers