해결해야 할 문제에 직면했을 때 (솔직히 오늘날 누가 그렇지 않습니까?) 우리 컴퓨터 직원이 일반적으로 취하는 기본 전략을 "분할 및 정복"이라고합니다. 다음과 같이 진행됩니다.
- 특정 문제를 작은 하위 문제 집합으로 개념화합니다.
- 각각의 작은 문제를 해결하십시오.
- 결과를 특정 문제의 솔루션으로 결합하십시오.
그러나 "분할 및 정복"만이 가능한 전략은 아닙니다. 보다 일반적인 접근 방식을 취할 수도 있습니다.
- 특정 문제를보다 일반적인 문제의 특수 사례로 개념화합니다.
- 어떻게 든 일반적인 문제를 해결하십시오.
- 일반적인 문제의 해결책을 특정 문제에 적용하십시오.
-에릭 리퍼 트
ASP.Net/C#과 같은 서버 측 언어로이 문제에 대한 많은 솔루션이 이미 존재한다고 생각합니다.
문제의 몇 가지 주요 측면을 간략히 설명했습니다.
전의. res.de.js, res.fr.js, res.en.js, res.js (기본 언어 용)
문제 : 필요한 데이터 만 얻을 수 있도록 각 페이지의 리소스 파일을 분리해야합니다.
솔루션 : https://github.com/rgrove/lazyload 와 같이 이미 존재하는 일부 도구를 사용할 수 있습니다.
문제 : 데이터를 저장하려면 키 / 값 쌍 구조가 필요합니다.
솔루션 : 문자열 / 문자열 공기 대신 자바 스크립트 개체를 제안합니다. IDE에서 인텔리 센스를 활용할 수 있습니다.
문제 : 일반 회원은 공개 파일에 저장해야하며 모든 페이지에서 액세스해야합니다.
솔루션 :이를 위해 웹 응용 프로그램의 루트에 Global_Resources라는 폴더를 만들고 각 하위 폴더에 대해 'Local_Resources'라는 이름의 전역 파일을 저장할 폴더를 만듭니다.
문제 : 각 하위 시스템 / 하위 폴더 / 모듈 구성원은 해당 범위에서 Global_Resources 구성원을 재정의해야합니다.
솔루션 : 각 파일을 고려
신청 구조
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
파일에 해당하는 코드 :
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"
};
Global_Resource에서 선택한 페이지에 원하는 언어의 리소스 파일을로드해야합니다.-모든 페이지에로드되는 첫 번째 파일이어야합니다.
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 파일 (이 파일은 마지막에로드되어야 함)
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");
도움이되기를 바랍니다 :)