C# - Handling Multiple Languages Across Multiple Applications And Shared Libraries?
Jan 18, 2010
We are developing products that will be used in the following way:
Various shared libraries which may be used by multiple products. I anticipate these libraries will mostly need to access string resources that contain error messages/exceptions. Various end-user based applications, designed to run as standalone apps on a PC. They will be required to support multiple languages upon deployment/installation.
Various web-sites which may be required to support multiple languages either at deployment time or possibly at runtime (i.e. minimal or zero downtime). Potentially the site might need to support multiple languages at the same time if being accessed globally.
We may be required to allow customers access to our language files for editing themselves. We would not wish to allow them access to our source code (other than the resource files/dlls) in order to achieve this. We might need to incorporate a facility to log exceptions in our native language (English in this case) and display them in the translated language. This will us debug our customers solutions in the field.
I am already aware of products like RCWinTrans and handling multiple languages in VC++/MFC applications. However, the requirements we are faced with here are more extensive and thus require us to make a few up front decisions that could be difficult to change long term, so ideally we want to make the best choice now. Based on my own knowledge, I have a few questions although I may be missing some tricks with .net that will be happily received. Here are my questions:
What would be best? Put all our resources in a seperate DLL per VS solution OR put the resources in each VS project. The way I see it per solution is easier to manage, modify, and allow customer access. The per project solution seems cleaner though and makes the individual projects more portable. This method would apply to our shared library based solutions as well as our end-application based solutions.
Is it possible to have two seperate resource files loaded at once i.e. if we want to log the exceptions in English but supply them back up the food chain (as a message in an exception) in the translated language? Are there any tricks we can use to automate this like AOP?
I'm looking into using the OutputCache-attribute for my ASP.NET MVC website. However, my website is using resources (*.res-files) to display two different languages (based on the user's settings in a cookie and/or database setting). Is there any way I can cache actions for my two languages separately?
Setting a "VaryByHeader" isn't gonna cut it since I have lots of visitors so every second visitor has probably another language set than the visitor before him. This would cause the cached action/page to always be updated since it's a different language.
I have a Solution with a web project and some class libraries. The enumerations are in a the enumerations folder within my web project. I would like to make some of the enumerations available to other class libraries within my Solution. Should I just add another class library and call it Enumerations to my Solution so that all class libraries and my web project can access them?
I am part of a development team building a new ASP.NET 3.5 web application. Two of us are C# coders, and the other is a VB.NET coder.
I know that we can mix languages on a per-project basis, and one can build classes in one language that inherit from classes written in the other language in a different project (which we are already doing), but I can see us getting into a situation where we might well end up with cyclic dependencies between our various project DLLs.
Other than simply having a high number of projects (more seperation of concerns into more libraries), how have you managed this situation on your own projects?
Note - I believe this question to be different enough from the only similar match I could find (this one) on the basis that we are not wanting to use different languages in order to take advantage of their specific features per se, but rather to make use of what developer resource is available to us (i.e. one dev just happens to be VB.NET only).
I am working on a web forms application that needs to support multiple languages based on a user's preference. Here are some considerations to keep in mind about the needed solution:
I want to avoid using resource files to store the different text translations because I'd like the ability to change them without having to recompile and deploy the application.
Also the translations ideally need to be adminstratable.
It seems its a considerable amount of effort to add this support to an existing application.
I am creating a website for an international organization. The initial default page provides a list of languages for the user to select from, but then every page thereafter must be created at runtime with every text field inserted with the selected language. I am using tables in an SQL Server database that provides the translations for every text field on every page. My question is: How do I create a new web page at runtime that is seen by the user in the proper language? I know how to go from one web page to another existing web page. I just do not know how to transfer execution to a new web page.
We have some routing rules that use the prefix /en/ in the url as a identifier for the language, but the problem is that if someone is visiting our french site [URL], they are redirect to [URL], which in turn sets the culture to english. So after logging in, users may need to change there language back to french.
So if the website need to suppurt more languages, so I need to do something like this in the web config:
[code]....
I know you can not have code in the web.config, but this is just to illustrate what I am trying to achieve. Could anyone provide a simple solution, or links to solutions they may already use?
I am not sure where to put this question... but, we have a SQL Server 2005 -> .net 2.?? application that is suppose to be made available to multiple countries and in multiple languages..... can someone give me some direction on how a single datastore can be pulled out and displayed in multiple languages and then those data inputs from multiple languages can be stored in their native language?
I'm storing some value in an asp.net session on the first page. On the next page, this session value is being read. However if multiple tabs are opened and there are multiple page 1->page 2 navigation going on, the value stored in session gets mixed up since the session is shared between the browser tabs.I'm wondering what are the options around this :Query String: Passing value between the pages using query string, I don't want to take this approach since there can be multiple anchor tags on page 1 linking to page 2 and I can not rewrite the URLs of each tag since they are dynamic.Cookies??? In-memory cookies are shared across browser tabs too, same as the session cookie, rite ?
I'm trying to configure a websetup for the first time for our ASP.NET application which consists of 11 web services. Is it possible to create an msi that will install the app and the 11 web services and also set-up the app pools & create the apps in IIS? Or would I need an individual setup for each web service? Basically I need to make it as simple as possible for the client to release.
I'm currently trying to interface our new intranet (ASP-MVC) with the web front end of our pager system. The pager system's front end is about 10 years old, poor interface and no documentation. To do this I have the form on the intranet post to the server, our server then sends an HTTP POST to the pager server that mimics what its own form sends.
While testing this for overloading (we sent about 10 messages almost concurrently) the pager server crashed, as the system is a black box and the only difference we noticed was the concurrent POSTs the least we can do is try to prevent this happening.I want to have all messages go into a queue that sends at most once every 5-10 seconds but I'm not sure how to implement this,
I didn't specify this earlier but the process should be synchronous from the point of view of the browser, ie webserver gets the http POST request from the browser, message is put into the queue, message is sent from the queue, webserver sends http response to the browser. This is not a high volume service and I expect simultaneous requests to be rare so response will be near instantaneous, it is more of a throttle to prevent potential issues with concurrent requests.
i have a recruitment section in an admin system for a website, and now my client wants the ability to select multiple applications at the same time, via a tick box, and attach them to an email.. For example, look at this image: [URL] You will see a list of applicants for jobs, i was thinking of having a checkbox which the user can select and then hit a button which opens an email window with all the Curriculum Vitae's (Resime's) attached.. These are already on the server, specific to users, but is what i am trying to do possible?? So selecting multiple applications and attaching the details, which is a word document to an email?? If so, can you show me an example of similar methods that have been done or even something that i can work from?
I have two identical applications setup on IIS on different virtual directories (I have done some workaround to ensure that they both have the same application name). Is there a way to share session id across two asp.net web applications?
Since I'm storing the session in StateServer, they should both be getting the same session data, however, a different session id is created everytime I go from application a to applicatino b. Wouldn't this happen in a load balancing scenario as well? Where when I go to www.test.com, it would redirect that request to server a, and then if I hit it again, it would go to server b, but since it's a different web application, it would create a new session id?
I have a question concerning website structure. I have a website which will be an intranet site. On this site I will have a main page that has links to different apps that will reside in this site. I want to separate the apps in their own folders.My question is do I just create a folder for each one or do I create a new webpage within the main webpage for each one? The reason I am asking is I use three layer model and my object data classes and db classes need to reside in App_Code folder. Do I put all these from every app in the one folder(on the main page) or if I create a site within a site can each have it's own App_Code folder. Also if I create the site within a site will I be able to redirect to different pages just by relative URLS(../cashmanagement) and everything work OK.I am pretty new to ASP and this is my first site with mutiple programs.
I want to deploy multiple asp.net applications on same hosting with subdomains. How it should be manged ?
I just created a subdomain and deploy application in its folder; when I tried to access application with subdomain it shows the following error:
An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
I've set up two ASP.NET applications on a machine, their web.config files contain the same applicationName value in AspNetSqlMembershipProvider item so they share users and roles.
The problem sequence is:
user logs into application A,opens new tab in a browser logs into application B, his login in application A is signed out and vice versa.
Should I use a different approach to sharing login information between two applications?
,Second and Third applications are accessed throught the first,So Authentication (form authentication) is happening from the first application only , all are deployed on same IIS with seperate virtual directory
Like
1.Localhost/EmpMananger
1. Localhost/Hr
2.Localhost/Payroll
, I used the same Entires in both <machineKey> and <forms> Elements in webconfig file of all applications,
Applications are working fine and Page.User.Identity are available in all applications but once loginUrl and defaultUrl entry is changed to actual name other than localhost
Eg: localhost/EmpManager/default.aspx To myserver/EmpManger/default.aspx
the authentication ticket is not available in second and third applicaiton
how to structure our intranet. The way it's going right now is, that I'll create a web application that usually contains just a single web page and then deploy it. I'm using the file system deployment to deploy to a test server.
The file structure on this test server is something like "\serverwebintranetwebapplicationsAPP_NAME". I would create a folder on the server with whatever name to replace "APP_NAME" and then deploy into that folder. Everything deploys fine and is structured fine, none of the pages will load.
When try to load the page you get an error like: Could not load type 'WebInterface._Default'. The dll containing that code is definitely there. Inside the "APP_NAME" folder is the bin folder, config file, and the (usually) single aspx page. So for some reason, the web page can't find the dll files.
We are having a project which is for various online application systems for an educational institute. (Asp.Net 2.0 Web Site)
initially we developed all applications in single project with proper folder structure. but now we want to make each application as separate product.
all applications share single authentication(Obviusly this is single project) want to keep that way only.
I want to split project in smaller projects but want to keep shared authentication so how should i orgnise this project in IDE.
Also i need guidence on hosting such project
i should make small projects within single solution file. and at the time of publish amke single virtual directory to host the root project(login.aspx etc) and in subdirectories i should host other projects. so this way SSO(single sign on) across applications is possible ..
I've got a Visual Studio 2010 solution that has multiple web applications in it. I've set one as the startup project but when I debug Visual Studio is starting up a development server for each web application in my solution. Is there anyway I can have Visual Studio only start up the development server for just the default startup project?
I recently received a project that contains multiple web applications with no MVC structure. For starters I've created a library (DLL) that will contain the main Business Logic. The problem is with Caching - If I use the current web context cache object than I might end up with duplicate caching (as the web context will be different for every application).
I'm currently thinking about implementing a simple caching mechanism with a singleton pattern that will allow the different web sites (aka different application domains) to share their "caching wisdom". I'd like to know what is the best way to solve this problem.