473,396 Members | 2,014 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

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.Yes". 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:

- ResourceStringOnly: 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.Yes" rather than the
lanugage specific string.
- TokensAndResourceStrings: 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 1466
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_tobinharris.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.Yes". 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:

- ResourceStringOnly: 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.Yes" rather than the
lanugage specific string.
- TokensAndResourceStrings: 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
CommunityServerForums 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...just 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)...anyways, 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_tobinharris.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**************@tk2msftngp13.phx.gbl...
A part of this approach stems from my own experience and another from the
CommunityServerForums 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...just 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)...anyways, 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_tobinharris.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
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...
0
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...
3
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...
3
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...
1
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...
2
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...
3
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...
0
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,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
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...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
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,...

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.