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 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
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
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
"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
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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...
|
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
|
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.
|
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.
|
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).
| |
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....
|
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.
|
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...
|
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...
|
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...
|
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...
| |
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...
|
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();...
|
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...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |