あなたが解決すべき問題に直面したとき(そして率直に言って、最近では誰がそうではないのか?)、私たちコンピューターの人々が通常採用する基本的な戦略は、「分割統治」と呼ばれます。こんなふうになります:
- 特定の問題を一連の小さな副問題として概念化します。
- それぞれの小さな問題を解決します。
- 結果を特定の問題の解決策に結合します。
しかし、「分割統治」だけが可能な戦略ではありません。より一般的なアプローチを取ることもできます。
- 特定の問題をより一般的な問題の特殊なケースとして概念化します。
- どういうわけか一般的な問題を解決します。
- 一般的な問題の解決策を特定の問題に適合させます。
-エリック・リペルト
ASP.Net/C#などのサーバー側の言語には、この問題の解決策がすでに多数あると思います。
問題の主要な側面のいくつかを概説しました
例。res.de.js、res.fr.js、res.en.js、res.js(デフォルト言語用)
問題:各ページのリソースファイルを分離して、必要なデータのみを取得する必要がある
解決策:https://github.com/rgrove/lazyloadのような既存のツールを使用できます
。
問題:データを保存するには、キーと値のペア構造が必要です
解決策:文字列/文字列airではなく、javascriptオブジェクトをお勧めします。IDEからインテリセンスを利用できます
問題:一般メンバーは公開ファイルに保存され、すべてのページがそれらにアクセスする必要があります
解決策:この目的のために、Global_Resourcesという名前のWebアプリケーションのルートにフォルダーを作成し、「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");
それが役に立てば幸い :)