473,618 Members | 3,044 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Localization Workflow/Approach

Hi there,

WARNING: Long-ish post!

I'm about to undertake an ASP.NET project that requires localisation (2
languages initially, then more).

I have read a little about localization, but have never needed to use it
commercially yet. I'm wandering what the best way to approach localization
is from a technical and also non technical point of view. My first thoughts
are these...

It seems to me that I should make it the clients responsibility to update
and add new language versions. This way, I can concentrate on software
issues, leaving them to worry about translation. The main reason for this is
that I don't want to be dragged into hundreds of language iterations of
"tweak resources - update code - review - tweak more"... I can't see how I
can achieve this using the standard resource file approach, my client won't
be able to work with these in their raw format, and there is no instant
feedback cycle to check that things look ok in the app.

A hopefully better option I need to research would be to build special tools
to allow the client to tweak language resources themselves, and see the
changes at run time in the ASP.NET pages. This will probably mean putting
string resources in a database and looking them up dynamically at runtime
(with some caching scheme of course!)

From a developers point of view, a "token" would be assigned to each control
(in the Tag or something ). For example, a "Yes" button might just have the
lookup token "Buttons.Ye s". The client can use a tool to lookup this token
and then set the various language strings for it ("Yes", "Ja" or "Ci") for
example. They can then view the changes live, by selecting the appropriate
language.

This raises the question of how the client can know which token corresponds
to which UI control. This could be done by having a few different browse
modes:

- ResourceStringO nly: this is the default mode that is used in the live app.
A button might just show the text "Yes"
- TokensOnly: shows only the token such as "Buttons.Ye s" rather than the
lanugage specific string.
- TokensAndResour ceStrings: showing both the code and the string for the
currently selected language. E.g "[Buttons.Yes] Yes"

Using TokensOnly, they can see the token that they need to lookup to make a
correction/ammendment.

Now, assuming all this works and can be made performant, I'll be in a
position where the client can look after languages, and I can look after
coding, which hopefully will save me the anticipated pain of having to spend
time with the client worrying about language issues.

I realise there are other issues that I haven't yet considered, such as
string sizes, numerical formatting etc, but if this idea is ok then I can
move on to consider those aspects.

Are my goals naive? Is the solution naive!? Are there tried and tested
methods and tools that just work! Am I re-inventing the wheel? Any thoughts
would be *really* appreciated.

Just in case you're wondering, I'm thinking that 2 things will allow me to
accommodate different string sizes without too much pain:

1 - Keep screens simple, light and roomy
2- Intelligent use or CSS.
3 - We also need to follow W3C accessibility guidelines (priority 1 at
least), and I'm hoping that a simple design will benefit these also.

Hope all that made sense!?

Thanks in advance

Tobin

Nov 19 '05 #1
4 1480
Tobin:
I wrote a couple in-depth tutorials w/samples and reusable controls I think
you'll find very handy:
http://www.openmymind.net/index.aspx?documentId=3
http://www.openmymind.net/index.aspx?documentId=4

it uses non-compiled XML files so that your clients will be able to modify
them (you could even built a front-end (lemme know if you do so))...

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)
"Tobin Harris" <tobin@_do_not_ spam_tobinharri s.com> wrote in message
news:42******** **************@ news.zen.co.uk. ..
Hi there,

WARNING: Long-ish post!

I'm about to undertake an ASP.NET project that requires localisation (2
languages initially, then more).

I have read a little about localization, but have never needed to use it
commercially yet. I'm wandering what the best way to approach localization
is from a technical and also non technical point of view. My first thoughts are these...

It seems to me that I should make it the clients responsibility to update
and add new language versions. This way, I can concentrate on software
issues, leaving them to worry about translation. The main reason for this is that I don't want to be dragged into hundreds of language iterations of
"tweak resources - update code - review - tweak more"... I can't see how I can achieve this using the standard resource file approach, my client won't be able to work with these in their raw format, and there is no instant
feedback cycle to check that things look ok in the app.

A hopefully better option I need to research would be to build special tools to allow the client to tweak language resources themselves, and see the
changes at run time in the ASP.NET pages. This will probably mean putting
string resources in a database and looking them up dynamically at runtime
(with some caching scheme of course!)

From a developers point of view, a "token" would be assigned to each control (in the Tag or something ). For example, a "Yes" button might just have the lookup token "Buttons.Ye s". The client can use a tool to lookup this token
and then set the various language strings for it ("Yes", "Ja" or "Ci") for
example. They can then view the changes live, by selecting the appropriate
language.

This raises the question of how the client can know which token corresponds to which UI control. This could be done by having a few different browse
modes:

- ResourceStringO nly: this is the default mode that is used in the live app. A button might just show the text "Yes"
- TokensOnly: shows only the token such as "Buttons.Ye s" rather than the
lanugage specific string.
- TokensAndResour ceStrings: showing both the code and the string for the
currently selected language. E.g "[Buttons.Yes] Yes"

Using TokensOnly, they can see the token that they need to lookup to make a correction/ammendment.

Now, assuming all this works and can be made performant, I'll be in a
position where the client can look after languages, and I can look after
coding, which hopefully will save me the anticipated pain of having to spend time with the client worrying about language issues.

I realise there are other issues that I haven't yet considered, such as
string sizes, numerical formatting etc, but if this idea is ok then I can
move on to consider those aspects.

Are my goals naive? Is the solution naive!? Are there tried and tested
methods and tools that just work! Am I re-inventing the wheel? Any thoughts would be *really* appreciated.

Just in case you're wondering, I'm thinking that 2 things will allow me to
accommodate different string sizes without too much pain:

1 - Keep screens simple, light and roomy
2- Intelligent use or CSS.
3 - We also need to follow W3C accessibility guidelines (priority 1 at
least), and I'm hoping that a simple design will benefit these also.

Hope all that made sense!?

Thanks in advance

Tobin

Nov 19 '05 #2
Hi Karl,

Thanks *very* much for those resources, they're great. You've nicely
summarised the concepts in play, and attacked some really important issues.
Have many people used your appraoch? Is is credible ;-) I need to download
the app and have a better look, but it certainly looks like you're
attempting to address all the problems I'm anticipating.

The URL Rewriting looks like a flexible way of passing prefered culture into
the app without needing the session. It took me a minute to understand what
was going on here, I've never seen RewritePath before, but it's very useful
thankyou!

I was wondering if there any reason why you don't recommend keeping all
string resources in a database as opposed to an XML file?

What you raise about having multiple languages for data items is a good
point. I'd not thought of that yet. It's such a shame though - normalising
like this seems to complicate things so much! I imagine you'll get quite a
table explosion if there are lots of entities that are locale specific. I
agree that it's better than having a repeating group (one column per
language). Have you tried any other database approaches other than that
shown in part 2?

Thanks

Tobin
Nov 19 '05 #3
Tobin:
A part of this approach stems from my own experience and another from the
CommunityServer Forums which were developed by some fine microsoft regional
directors and mvps so, in my humble opinion, it's quite credible.

The XML file has the advantage of not really needing a programmed interface
to manipulate...ju st open in textpad and voila...you could do the same with
the database, but it wouldn't be as simple for translators whom likely never
used enterprise manager (you could of course import/export it to excel or
something)...an yways, there's no technical reason to prefer one over the
other...if you have a large amount of data, the database might be better
'cuz you can more easily customize it to do a lazy-load...that is cache the
data which is used frequently and hit the database for that which isn't (ur
typical 20/80 rule where 20% of stuff causes 80% of work).

These are the only two data models I've used. If you're 100% sure you won't
need to support additional languages in the future have column names with a
language prefix or something isn't too bad...it's when you start to add
additional languages that things get ugly. For database, I stick with the
"normalize 'til it hurts; denormalize 'til it works"...

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)
"Tobin Harris" <tobin@_do_not_ spam_tobinharri s.com> wrote in message
news:42******** *************** @news.zen.co.uk ...
Hi Karl,

Thanks *very* much for those resources, they're great. You've nicely
summarised the concepts in play, and attacked some really important issues. Have many people used your appraoch? Is is credible ;-) I need to download
the app and have a better look, but it certainly looks like you're
attempting to address all the problems I'm anticipating.

The URL Rewriting looks like a flexible way of passing prefered culture into the app without needing the session. It took me a minute to understand what was going on here, I've never seen RewritePath before, but it's very useful thankyou!

I was wondering if there any reason why you don't recommend keeping all
string resources in a database as opposed to an XML file?

What you raise about having multiple languages for data items is a good
point. I'd not thought of that yet. It's such a shame though - normalising
like this seems to complicate things so much! I imagine you'll get quite a
table explosion if there are lots of entities that are locale specific. I
agree that it's better than having a repeating group (one column per
language). Have you tried any other database approaches other than that
shown in part 2?

Thanks

Tobin

Nov 19 '05 #4
"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:eA******** ******@tk2msftn gp13.phx.gbl...
A part of this approach stems from my own experience and another from the
CommunityServer Forums which were developed by some fine microsoft regional
directors and mvps so, in my humble opinion, it's quite credible.
Thanks, I'll trust you ;-)
The XML file has the advantage of not really needing a programmed
interface
to manipulate...ju st open in textpad and voila...you could do the same
with
the database, but it wouldn't be as simple for translators whom likely
never
used enterprise manager (you could of course import/export it to excel or
something)...an yways, there's no technical reason to prefer one over the
other...if you have a large amount of data, the database might be better
I was thinking of a writing a simple web admin tool that would help with
this, so that they could use a web interface to set up languages.
Interestingly, the Microsoft Enterprise Localization Toolkit seems to have
something like this, however it's limited to SQL Server 8-(
These are the only two data models I've used. If you're 100% sure you
won't
need to support additional languages in the future have column names with
a
language prefix or something isn't too bad...it's when you start to add
additional languages that things get ugly. For database, I stick with the
"normalize 'til it hurts; denormalize 'til it works"...
I'll agree with you on that one! I was thinking of other ways for product
data, but in the end I decided that your way is best!

Thanks for your help.
Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)
"Tobin Harris" <tobin@_do_not_ spam_tobinharri s.com> wrote in message
news:42******** *************** @news.zen.co.uk ...
Hi Karl,

Thanks *very* much for those resources, they're great. You've nicely
summarised the concepts in play, and attacked some really important

issues.
Have many people used your appraoch? Is is credible ;-) I need to
download
the app and have a better look, but it certainly looks like you're
attempting to address all the problems I'm anticipating.

The URL Rewriting looks like a flexible way of passing prefered culture

into
the app without needing the session. It took me a minute to understand

what
was going on here, I've never seen RewritePath before, but it's very

useful
thankyou!

I was wondering if there any reason why you don't recommend keeping all
string resources in a database as opposed to an XML file?

What you raise about having multiple languages for data items is a good
point. I'd not thought of that yet. It's such a shame though -
normalising
like this seems to complicate things so much! I imagine you'll get quite
a
table explosion if there are lots of entities that are locale specific. I
agree that it's better than having a repeating group (one column per
language). Have you tried any other database approaches other than that
shown in part 2?

Thanks

Tobin


Nov 19 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
4174
by: Paolo Losi | last post by:
Hi all, I'm pretty new to the python language so please excuse me if this is FAQ... I'm very glad to be part of the list! :-) I'm looking into a way to implement a generic workflow framework with python. The basic idea is to use python scripts as the way to specify workflow behavior. The framework should not only use scripts as a specification language but is going to leverage on python interpreter for the execution of the scripts. One...
0
1613
by: Bevertec | last post by:
May 26 2004 Our client is a major bank in Jamaica and they have a contract requirement for a professional with the following skills. This is a 6 months contract. It would be 3 weeks/month in Jamaica and 1 week back home. All expenses including travel, accomodation (5 star) and meals would be taken care of. There would also be a per diem and a bonus at the end of contract. Oracle Consultant – Workflow
3
1581
by: Sebastian Bargmann | last post by:
Hi, I think I've read everything there is to read about localization in dotNET and I still don't get it. I understand the concepts and I understand the code, but there's no way that the scenarios described can be translated(!) to a real world application. Here's what I got. I have forms with controls on them and I have constant strings that I show in message boxes and the like.
3
1553
by: ABC | last post by:
My client request a workflow solution. They want the solution provide as: 1. Has a workflow diagram interface presents their roles, work and tasks. 2. Support .NET technologies for developers to enhance. 3. Has a workflow design to implement or modify the workflow sheets 4. Workflow Backend engine optional. I known Microsoft has Microsoft Windows Workflow Foundation. But I don't know it meet our client requirements or not.
1
1172
by: kelmen | last post by:
Greeting, I'm working on the resources stuff, using the explicit localization. And to test it is as : http://www.asp.net/QuickStart/aspnet/doc/localization/culture.aspx#ielanguage add in the desired language and move to top, in the IE - Tool - Option - Language. how this doesn't work. My still showing english (expecting Chinese).
2
1148
by: Robert Dufour | last post by:
In an english only application, it is fairly easy to make the table and field names in your application descriptive so that on creating the interface, most tools that bind data take the default field name and put it as the column name in say a grid control. However if you have a multi lingual UI you can localize the UI in Vs 2005 by selecting the language of the form and changing the text property of the controls to the localized text....
3
2510
by: =?Utf-8?B?R3JhaGFt?= | last post by:
I've added 2 tracking services to the wf runtime; one is the standard SqlTrackingService: trackingService = new SqlTrackingService(<trackingConnectionString>); <workflow Runtime>.AddService(trackingService); trackingService.IsTransactional = false; trackingService.UseDefaultProfile = true; This works just fine.
0
1665
by: RoninZA | last post by:
Hi all, My problem is this... I need to somehow communicate the completion of a workflow back to the calling application. The scenario is as follows: I have a "generic" workflow engine, utilising Windows Workflow Foundation. This part works fine, no hassles. The idea of the workflow engine is that we can integrate a workflow authorisation process easily into any application with minimal work. The problem lies in the "generic" part...
0
8212
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8595
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
8455
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7126
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5552
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4065
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4150
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2587
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1760
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.