Wenn Sie vor einem zu lösenden Problem stehen (und ehrlich gesagt, wer ist das heutzutage nicht?), Heißt die grundlegende Strategie, die wir Computer-Leute normalerweise verfolgen, „Teilen und Erobern“. Es geht so:
- Stellen Sie sich das spezifische Problem als eine Reihe kleinerer Unterprobleme vor.
- Lösen Sie jedes kleinere Problem.
- Kombinieren Sie die Ergebnisse zu einer Lösung des spezifischen Problems.
Aber „Teilen und Erobern“ ist nicht die einzig mögliche Strategie. Wir können auch einen allgemeineren Ansatz verfolgen:
- Stellen Sie sich das spezifische Problem als Sonderfall eines allgemeineren Problems vor.
- Löse irgendwie das allgemeine Problem.
- Passen Sie die Lösung des allgemeinen Problems an das spezifische Problem an.
- Eric Lippert
Ich glaube, dass es in serverseitigen Sprachen wie ASP.Net/C# bereits viele Lösungen für dieses Problem gibt.
Ich habe einige der Hauptaspekte des Problems skizziert
Ex. res.de.js, res.fr.js, res.en.js, res.js (für Standardsprache)
Problem: Ressourcendateien für jede Seite sollten getrennt werden, damit wir nur die Daten erhalten, die wir benötigen
Lösung : Wir können einige bereits vorhandene Tools wie
https://github.com/rgrove/lazyload verwenden
Problem: Wir benötigen eine Schlüssel / Wert-Paar-Struktur, um unsere Daten zu speichern
Lösung : Ich schlage ein Javascript-Objekt anstelle von String / String Air vor. Wir können von der Intelligenz einer IDE profitieren
Problem: Allgemeine Mitglieder sollten in einer öffentlichen Datei gespeichert sein und alle Seiten sollten darauf zugreifen
Lösung : Zu diesem Zweck erstelle ich einen Ordner im Stammverzeichnis der Webanwendung mit dem Namen Global_Resources und einen Ordner zum Speichern der globalen Datei für jeden Unterordner, den wir als "Local_Resources" bezeichnet haben.
Problem: Jedes Mitglied von Subsystemen / Unterordnern / Modulen sollte die Global_Resources-Mitglieder in ihrem Bereich überschreiben
Lösung : Ich habe für jede eine Datei in Betracht gezogen
Anwendungsstruktur
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
Der entsprechende Code für die Dateien:
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"
};
Die Ressourcendatei für die gewünschte Sprache sollte auf die unter Global_Resource ausgewählte Seite geladen werden. Dies sollte die erste Datei sein, die auf allen Seiten geladen wird.
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 Datei (diese Datei sollte zuletzt geladen werden)
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");
Ich hoffe es hilft :)