Laden...

XAML gestützte Lokalisierung

Erstellt von Omit vor 15 Jahren Letzter Beitrag vor 14 Jahren 2.914 Views
Omit Themenstarter:in
143 Beiträge seit 2008
vor 15 Jahren
XAML gestützte Lokalisierung

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

1.820 Beiträge seit 2005
vor 15 Jahren

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 🙁

Omit Themenstarter:in
143 Beiträge seit 2008
vor 15 Jahren

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

Gruß Timo

T
179 Beiträge seit 2007
vor 15 Jahren

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.

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo Omit,

vielleicht interessiert dich auch der Webcast: Advanced WPF (Teil 4-6) - Lokalisierung

E
38 Beiträge seit 2009
vor 15 Jahren

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

M
179 Beiträge seit 2008
vor 14 Jahren

Hallo,

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

Liebe Grüße,

MCT

Wer nicht wagt .. der nicht gewinnt .. !

E
38 Beiträge seit 2009
vor 14 Jahren

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!

Mit freundlichen Grüßen
Felix

M
164 Beiträge seit 2009
vor 14 Jahren

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

446 Beiträge seit 2004
vor 14 Jahren

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: https://libera.chat/ ##chsarp

U
1.578 Beiträge seit 2009
vor 14 Jahren

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.

M
164 Beiträge seit 2009
vor 14 Jahren

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 😉

U
1.578 Beiträge seit 2009
vor 14 Jahren

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.