Je suis développeur de avec 5 ans d'expérience dans le web développement de composants et d'outils pour les développeurs web.
Lorsque vous êtes confronté à un problème à résoudre (et franchement, qui n'est pas
ces jours-ci?), la stratégie de base généralement prises par nous de l'ordinateur gens
est appelé "diviser pour régner". Il va comme ceci:
• Conceptualiser le problème spécifique comme un ensemble de sous-problèmes.
• Résoudre chaque petit problème.
• Combiner les résultats dans une solution à un problème spécifique. Mais "diviser pour régner" n'est pas la seule stratégie possible. Nous pouvons également
prendre une approche plus généraliste:
• Conceptualiser le problème spécifique comme un cas particulier d'un problème plus général.
• D'une certaine manière de résoudre le problème général.
• L'adaptation de la solution du problème plus général du problème spécifique.
-Eric Lippert
Je crois que de nombreuses solutions existent déjà pour ce problème dans les langages côté serveur comme ASP.Net/C#.
J'ai décrit quelques-uns des principaux aspects du problème
-
Question: Nous avons besoin de charger des données que pour la langue de votre choix
Solution: Pour cela, nous sauver de la date des fichiers distincts pour chaque langue
ex. res.de.js, res.fr.js, res.en.js, res.js(pour la langue par défaut)
-
Problème: les fichiers de Ressources pour chaque page doit être séparées, de sorte que nous obtenons seulement les données dont nous avons besoin
Solution: Nous pouvons utiliser des outils qui existent déjà, comme
https://github.com/rgrove/lazyload
-
Question: Nous avons besoin d'une paire clé/valeur de la structure pour enregistrer nos données
Solution: je vous propose un objet javascript au lieu de string/string à l'air.
On peut bénéficier de l'intellisense à partir d'un IDE
-
Question: de façon Générale, les membres doivent être stockés dans un dossier public et toutes les pages doivent avoir accès
Solution: Pour cela, je fais un dossier à la racine de l'application web appelée Global_Resources et un dossier pour stocker les fichiers global pour chacun des sous-dossiers, nous l'avons appelé 'Local_Resources'
-
Question: Chacun des sous-systèmes/sous-dossiers/modules membre doit l'emporter sur la Global_Resources membres de leur étendue
Solution:- je considéré comme un fichier pour chaque
Structure De La Demande
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
Le code correspondant pour les fichiers:
Global_Resources/default.js
var res = {
Create : "Create",
Update : "Save Changes",
Delete : "Delete"
};
Global_Resources/default.fr.js
var res = {
Create : "créer",
Update : "Enregistrer les modifications",
Delete : "effacer"
};
Le fichier de ressources pour la langue souhaitée doit être chargé sur la page sélectionnée à partir de Global_Resource - Ce qui devrait être le premier fichier qui est chargé sur toutes les pages.
UserManagementSystem/Local_Resources/default.js
res.Name = "Name";
res.UserName = "UserName";
res.Password = "Password";
UserManagementSystem/Local_Resources/default.fr.js
res.Name = "nom";
res.UserName = "Nom d'utilisateur";
res.Password = "Mot de passe";
UserManagementSystem/Local_Resources/createUser.js
// Override res.Create on Global_Resources/default.js
res.Create = "Create User";
UserManagementSystem/Local_Resources/createUser.fr.js
// Override Global_Resources/default.fr.js
res.Create = "Créer un utilisateur";
manager.js fichier (ce fichier doit être charger la dernière)
res.lang = "fr";
var globalResourcePath = "Global_Resources";
var resourceFiles = [];
var currentFile = globalResourcePath + "\\default" + res.lang + ".js" ;
if(!IsFileExist(currentFile))
currentFile = globalResourcePath + "\\default.js" ;
if(!IsFileExist(currentFile)) throw new Exception("File Not Found");
resourceFiles.push(currentFile);
// Push parent folder on folder into folder
foreach(var folder in parent folder of current page)
{
currentFile = folder + "\\Local_Resource\\default." + res.lang + ".js";
if(!IsExist(currentFile))
currentFile = folder + "\\Local_Resource\\default.js";
if(!IsExist(currentFile)) throw new Exception("File Not Found");
resourceFiles.push(currentFile);
}
for(int i = 0; i < resourceFiles.length; i++) { Load.js(resourceFiles[i]); }
// Get current page name
var pageNameWithoutExtension = "SomePage";
currentFile = currentPageFolderPath + pageNameWithoutExtension + res.lang + ".js" ;
if(!IsExist(currentFile))
currentFile = currentPageFolderPath + pageNameWithoutExtension + ".js" ;
if(!IsExist(currentFile)) throw new Exception("File Not Found");
Espérons que cela aide :)