Kiedy stajesz przed problemem do rozwiązania (i szczerze mówiąc, kto nie jest obecnie?), Podstawowa strategia, którą zwykle przyjmujemy my, komputerowcy, nazywa się „dziel i rządź”. To wygląda tak:
- Konceptualizuj konkretny problem jako zbiór mniejszych podproblemów.
- Rozwiąż każdy mniejszy problem.
- Połącz wyniki w rozwiązanie konkretnego problemu.
Jednak „dziel i rządź” nie jest jedyną możliwą strategią. Możemy również przyjąć bardziej ogólne podejście:
- Postrzegaj konkretny problem jako szczególny przypadek bardziej ogólnego problemu.
- Jakoś rozwiązać ogólny problem.
- Dostosuj rozwiązanie ogólnego problemu do konkretnego problemu.
- Eric Lippert
Uważam, że istnieje już wiele rozwiązań tego problemu w językach po stronie serwera, takich jak ASP.Net/C#.
Przedstawiłem kilka głównych aspektów problemu
dawny. res.de.js, res.fr.js, res.en.js, res.js (dla języka domyślnego)
Problem: pliki zasobów dla każdej strony powinny być oddzielone, abyśmy otrzymali tylko potrzebne dane
Rozwiązanie : Możemy użyć niektórych narzędzi, które już istnieją, takich jak
https://github.com/rgrove/lazyload
Problem: potrzebujemy struktury par klucz / wartość, aby zapisać nasze dane
Rozwiązanie : sugeruję obiekt javascript zamiast string / string air. Możemy czerpać korzyści z inteligencji w IDE
Problem: Członkowie generalni powinni być przechowywani w pliku publicznym, a wszystkie strony powinny mieć do nich dostęp
Rozwiązanie : w tym celu tworzę folder w katalogu głównym aplikacji internetowej o nazwie Global_Resources i folder do przechowywania pliku globalnego dla każdego podfolderów, które nazwaliśmy „Local_Resources”
Problem: każdy członek podsystemu / podfolderu / modułu powinien zastąpić elementy członkowskie Global_Resources w swoim zakresie
Rozwiązanie : rozważałem plik dla każdego
Struktura aplikacji
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
Odpowiedni kod dla plików:
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"
};
Plik zasobów dla żądanego języka powinien zostać załadowany na stronie wybranej z Global_Resource - powinien to być pierwszy plik ładowany na wszystkich stronach.
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";
plik manager.js (ten plik powinien być ładowany jako ostatni)
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");
Mam nadzieję, że to pomoże :)