Project Description
Multilingual User Interfaces providing support for switching UIs from one language to another.

This is a trivially simple WPF application whose purpose is to change languages dynamically and to support additional languages without the need for modify the code. Language support is implemented through a resource only assembly.

Design Patterns

  • Model View View Model The Model View ViewModel (MVVM) is an architectural pattern used in software engineering that originated from Microsoft as a specialization of the Presentation Model design pattern introduced by Martin Fowler.1 Largely based on the model–view–controller pattern (MVC), MVVM is a specific implementation targeted at UI development platforms which support the event-driven programming in Windows Presentation Foundation (WPF) and Silverlight on the .NET platforms using XAML and .NET languages. Technically different, but similar, Presentation Model design patterns are available in HTML5 through AngularJS,23 KnockoutJS,4 Ext JS,5 Vue.js, and for Java the ZK framework (Model-View-Binder). (source:
  • Dependency Injection Dependency injection (DI) is a prime technique for building loosely coupled applications. It provides opportunities to simplify code, abstract and handle dependencies between objects, and automatically generate dependent object instances. Dependency injection describes the process of designing applications so that, rather than specifying concrete dependencies within the application at design time and creating the required objects in the code, the application decides at run time what objects it needs, and generates and injects these into the application. (source
  • Command Pattern In object-oriented programming, the command pattern is a behavioral design pattern in which an object is used to represent and encapsulate all the information needed to call a method at a later time. This information includes the method name, the object that owns the method and values for the method parameters. (source )
  • Module Discovery The application uses a discovery technique to locate and decode the languages it will support.
  • Loose Coupling In computing and systems design a loosely coupled system is one in which each of its components has, or makes use of, little or no knowledge of the definitions of other separate components. The notion was introduced into organizational studies by Karl Weick. Sub-areas include the coupling of classes, interfaces, data, and services. (source:

Test Driven Development

The project contains a suite of unit tests that use the native test libraries available in Visual Studio.

Component Assemblies

CultureResources (a stand-alone assembly which contains one resource file for each language)
Application Payload (Separate modules for View, ViewModel, and Model)

Build Information

The application is written in C# and is targeted for the .NET 4.5 Framework.

Last edited Jun 9, 2014 at 3:49 PM by TyburnConsultancy, version 6