Archive for the 'c#' Tag
Lokalisierung mit Cultures
Um ein .Net Webprojekt zu lokalisieren, wurden bis anhin bei uns sämtliche Elemente in separaten Strings übersetzt gehalten und zur Laufzeit mittels Select/Case (abhängig von der ausgewählten Sprache) ausgelesen und den Objekten zugeordnet. Ein Relikt aus alten Projekten..
Dass dies auch eleganter geht, zeigt das folgende Beispiel. Nachdem eine .aspx Seite aufgebaut wurde (inkl. Code-behind File), kann in Visual Studio 2005 unter “Tools” der Punkt “Generate Local Resource” ausgewählt werden. Es wird automatisch im Projekt ein Ordner App_LocalResources angelegt mit dem Namen der Webform und dem Zusatz .apsx.resx. In dem File finden sich sämtliche verwendeten Elemente der .aspx Seite wieder, zu jedem Element existiert ein String mit dem angezeigten Text. Die Liste kann manuell beliebig erweitert werden, falls neue Buttons oder was auch immer zur Seite hinzugefügt werden. Nun kann das .resx File kopiert und umbenannt werden, beispielsweise “Default.aspx.de-CH.resx” oder “Default.aspx.en-US.resx”. Der Filenamen enthält nun bereits die Sprachspezifikation. Die einzelnen Strings in den Files können bequem übersetzt werden, Visual Studio stellt dafür einen kleinen Editor zur Verfügung.
Zur Laufzeit kann nun innerhalb der Webform “CurrentCulture” und “CurrentUICulture” gesetzt werden, aufgrund dieser Auswahl wird das entsprechende .resx File eingelesen und die Strings automatisch auf die Objekte gemappt. Natürlich können die Strings aber auch manuell ausgelesen werden. Hier ein Codesample:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.Globalization;
public partial class _Default : System.Web.UI.Page
{
// Methode um manuell ein ResouceObject auszulesen
public string G(string sKey)
{
return GetLocalResourceObject(sKey).ToString(); ;
}
// Init
protected override void InitializeCulture()
{
base.InitializeCulture();
string selectedLanguage = "de-CH";//""en-US";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
}
// Einem ASP Button einen String manuell zuweisen
protected void Page_Load(object sender, EventArgs e)
{
Button1.Text = G("Button1Resource1.Text");
}
}
Add-In für VisualStudio 2008, Support für SQL Server 2008
Microsoft hat ein Add-In zur Verfügung gestellt für alle glücklichen Entwickler, die bereits mit dem VisualStudio 2008 unterwegs sind. Letzteres verursachte bislang Probleme im Zusammenspiel mit einem SQL Server 2008. Das Add-In ist gerade mal knapp 4mb gross und kann HIER runtergeladen werden.
Guter Ersatz für das XAMLpad
Wer sich bereits mit Silverlight und XAML rumschlägt, ist sicher einmal über das XAMLpad gestolpert. Das Stück Software von Microsoft war bislang nicht unbedingt der Hammer, weswegen es wohl niemand wirklich einsetzt.Eine gute Alternative ist nun mit Kaxaml verfügbar. Die Freeware kann auf der offiziellen Website http://www.kaxaml.com/ runtergeladen werden.Einizge Voraussetzung: Windows XP oder Vista mit dem .net Framework 3.0, da das Tool auf WPF setzt.
Comments(0)