Ketika Anda dihadapkan pada sebuah masalah untuk dipecahkan (dan sejujurnya, siapa yang tidak sekarang ini?), Strategi dasar yang biasanya diambil oleh kita para komputer disebut “bagi dan taklukkan”. Ini berjalan seperti ini:
- Konseptualisasikan masalah spesifik sebagai sekumpulan sub-masalah yang lebih kecil.
- Selesaikan setiap masalah yang lebih kecil.
- Gabungkan hasil menjadi solusi dari masalah spesifik.
Tapi “bagi dan taklukkan” bukanlah satu-satunya strategi yang mungkin. Kami juga dapat mengambil pendekatan yang lebih umum:
- Konseptualisasikan masalah khusus sebagai kasus khusus dari masalah yang lebih umum.
- Entah bagaimana memecahkan masalah umum.
- Sesuaikan solusi dari masalah umum dengan masalah spesifik.
- Eric Lippert
Saya yakin sudah banyak solusi untuk masalah ini dalam bahasa sisi server seperti ASP.Net/C#.
Saya telah menjelaskan beberapa aspek utama dari masalah tersebut
ex. res.de.js, res.fr.js, res.en.js, res.js (untuk bahasa default)
Masalah: File sumber daya untuk setiap halaman harus dipisahkan sehingga kami hanya mendapatkan data yang kami butuhkan
Solusi : Kita bisa menggunakan beberapa alat yang sudah ada seperti
https://github.com/rgrove/lazyload
Masalah: Kami membutuhkan struktur pasangan kunci / nilai untuk menyimpan data kami
Solusi : Saya menyarankan objek javascript, bukan string / string air. Kita bisa mendapatkan keuntungan dari Intellisense dari IDE
Masalah: Anggota umum harus disimpan dalam file publik dan semua halaman harus mengaksesnya
Solusi : Untuk tujuan ini saya membuat folder di root aplikasi web bernama Global_Resources dan folder untuk menyimpan file global untuk setiap sub folder yang kami beri nama 'Local_Resources'
Masalah: Setiap anggota subsistem / subfolder / modul harus mengganti anggota Global_Resources pada cakupan mereka
Solusi : Saya mempertimbangkan satu file untuk masing-masing
Struktur Aplikasi
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
Kode yang sesuai untuk file:
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"
};
File sumber daya untuk bahasa yang diinginkan harus dimuat di halaman yang dipilih dari Global_Resource - Ini harus menjadi file pertama yang dimuat di semua halaman.
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";
file manager.js ( file ini harus dimuat terakhir)
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");
Semoga membantu :)