Jonny Bekkum NET Architect and Developer at Inmeta Core developer CSLANET NET Code Resx filetype Codegen Resourcesdesignercs Translation is convention based on filename ResourcesltcultureNamegtresx for translated resources ID: 732865
Download Presentation The PPT/PDF document "Inmeta Crayon AS Resource management in ..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Inmeta Crayon AS
Resource management in WinRT
Jonny Bekkum
.NET Architect and Developer at Inmeta
Core developer CSLA.NETSlide2
.NET Code
Resx – filetype
Codegen Resources.designer.cs
Translation is convention based on filename, Resources.<cultureName>.resx for translated resourcesDefault resource file in project properties. Slide3
.NET Deployment
Default resources.resx
embedded in assembly.
Translated resources compiled into satellite assemblies <cultureName>\<assembly>.resources.dllSlide4
.NET
DEMOSlide5
WinRT Code
New filetype
.resw (same XML specification as resx)
No codegen, no default resource fileConvention based on file structure and files must
have
identical filename
. Slide6
WinRT Compile
Resw files is compiled into pri files by makepri.exe
R
esources per project is compiled into <AssemblyName>.priSlide7
WinRT Deploy
Application
ALL language resources for
application and libraries is merged into a common tree (ResourceMap) and placed in
resources.pri
Resouces.pri must be deployed with your applicationSlide8
Package Resource
Index (.pri)
The PRI contains actual string resources, and an indexed set of file paths that refer to the files in the package.
Packages typically contain a single PRI file named resources.pri.
PRI files are data-only and are not of the PE format. They are specifically designed to be data-only as the resource format for Windows. They replace resources contained within DLLs in the Win32 app model
.
Use makepri.exe /dump to see the content of the .
pri
file.Slide9
Load resources by ResourceLoader
Application
var rl = new ResourceLoader
(); // default is “Resources”
var stringVal = rl.GetString(<resourceName
>);
In an assembly
var
rl
= new
ResourceLoader
("<
AssemblyName
>/Resources
");
var stringVal = rl.GetString(<resourceName>);
In a custom resource tree
var
rl
= new
ResourceLoader
("<
AssemblyName
>//<
Custom>");
var stringVal = rl.GetString(<resourceName>);Slide10
Load
resources
by
ResourceManagerWindows.ApplicationModel.Resources.Core.ResourceManagerRequires more knowledge of the ResourceMap
Can retrive other types than string (=> StorageFile)
Can enumerate through/inspect
all possible values Slide11
WinRT - resources
DEMOSlide12
Image localization in Xaml
If you are referencing the image from XAML, localizing an image is as simple as creating folders for the locals you need to support and put localized versions of the image file into the local
folder
And referencing the image in XAML is the normal relative URL without the
culture
code as shown in the following
example.Slide13
Image localization in code
Using a relative URI to reference package content is not permitted in Metro XAML apps
.
Instead you have to use an absolute URI using the ms-appx scheme.Slide14
Contrast and scale conventions
High Contrast :
contrast-black
contrast-white
Pixel
Density:
scale-80 (start
screen only
)
scale-100
(normal
DPI, no scaling)
scale-140 (
1920*1080, minimum DPI 174)
scale-180 (
2560*1440, minimum DPI 240)Slide15
Image scaling conventions
Use scalable vector
graphics
- SVGOr use resource loading for bitmap images:
Option
#1 - File naming convention:
\
test.scale-100.jpg
\
test.scale-140.jpg
\
test.scale-180.jpg
Option
#2 - Folder naming convention:
\
scale-100\test.jpg
\
scale-140\test.jpg
\
scale-180\test.jpg Slide16
WinRT – image localization
DEMOSlide17
.NET and WinRT side by side
So you have business / framework code in NET that you want to share into WinRT projects?
Code can be linked into other project
Then there’s the case of resource stringsCopy .resx files to new folder structure and name .resw
Create your own Resources.Designer.cs so you can use resource strings as in .NET.
Use ResEx to update your resource files.
Only one master set of resx – filesSlide18
NET and winRT
Makepri.exe has better checks than .NET compiler
Allowed languages (not supprort for legacy languages)
Invalid language name causes duplicate name causes errorsResources in localized languages only causes warningsStart wth default language and add languages one by one. Slide19
Net and WinRT
DEMOSlide20
Summary
Understand resources and assets is handled in WinRT
Understand how to localize and style your Windows Store App
Understand ResourceMAP and PRI files.Share code between .NET and WinRT.Slide21
Resources
MSDN
Guidelines
for scaling to pixel density
Resource Management System
Choosing your languages
Windows 8 Recipes
Building Global Windows 8 Metro XAML Apps Part
1
Building Global Windows 8 Metro XAML Apps Part 2
Building Global Windows 8 Metro XAML Apps Part 3Slide22
Resources
ResEx
-
the composite, translation friendly .NET Resource editor.ILSpy - the open-source .NET assembly browser and
decompiler
.Slide23
Thank you
Mail:
jonny.bekkum@gmail.com
Blog: http://jonnybekkum.wordpress.com