diff --git a/resources/lang/id/dashboard.php b/resources/lang/id/dashboard.php
new file mode 100644
index 00000000..590e4954
--- /dev/null
+++ b/resources/lang/id/dashboard.php
@@ -0,0 +1,196 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ 'dashboard' => 'Dashboard',
+
+ // Incidents
+ 'incidents' => [
+ 'title' => 'Insiden & Penjadwalan',
+ 'incidents' => 'Insiden',
+ 'logged' => '{0} Tidak ada insiden, bagus.|Anda mencatat satu insiden.|Anda sudah melaporkan :count insiden.',
+ 'incident-create-template' => 'Buat Template',
+ 'incident-templates' => 'Template Insiden',
+ 'add' => [
+ 'title' => 'Tambahkan Insiden',
+ 'success' => 'Insiden sudah ditambahkan.',
+ 'failure' => 'Ada masalah dengan insiden ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit insiden',
+ 'success' => 'Insiden sudah diperbarui.',
+ 'failure' => 'Ada masalah dengan insiden ini.',
+ ],
+
+ // Incident templates
+ 'templates' => [
+ 'title' => 'Template Insiden',
+ 'add' => [
+ 'title' => 'Buat template insiden',
+ 'success' => 'Template sudah dibuat.',
+ 'failure' => 'Ada masalah dengan template insiden ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit Template',
+ 'success' => 'Template sudah diperbarui!',
+ 'failure' => 'Ada masalah dengan template insiden ini',
+ ],
+ ],
+ ],
+
+ // Incident Maintenance
+ 'schedule' => [
+ 'schedule' => 'Jadwal Pemeliharaan',
+ 'scheduled_at' => 'Dijadwalkan pada :timestamp',
+ 'add' => [
+ 'title' => 'Tambahkan Jadwal Pemeliharaan',
+ 'success' => 'Jadwal sudah ditambahkan.',
+ 'failure' => 'Ada masalah saat membuat jadwal.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit Jadwal Pemeliharaan',
+ 'success' => 'Jadwal sudah diperbarui!',
+ 'failure' => 'Ada masalah saat mengedit jadwal.',
+ ],
+ 'delete' => [
+ 'success' => 'Jadwal ini sudah dihapus dan tidak akan ditampilkan di halaman status anda.',
+ 'failure' => 'Jadwal tidak bisa dihapus. Silakan coba lagi.',
+ ],
+ ],
+
+ // Components
+ 'components' => [
+ 'components' => 'Komponen',
+ 'component_statuses' => 'Status Komponen',
+ 'listed_group' => 'Dikelompokkan dalam :name',
+ 'add' => [
+ 'title' => 'Tambahkan Komponen',
+ 'message' => 'Anda perlu menambahkan komponen.',
+ 'success' => 'Komponen sudah dibuat.',
+ 'failure' => 'Ada masalah dengan komponen ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit komponen',
+ 'success' => 'Komponen sudah diperbarui.',
+ 'failure' => 'Ada masalah dengan komponen ini.',
+ ],
+
+ // Component groups
+ 'groups' => [
+ 'groups' => 'Grup komponen|Grup komponen',
+ 'no_components' => 'Anda perlu menambahkan grup komponen.',
+ 'add' => [
+ 'title' => 'Tambahkan grup komponen',
+ 'success' => 'Grup komponen sudah ditambahkan.',
+ 'failure' => 'Ada masalah dengan grup komponen ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit grup komponen',
+ 'success' => 'Grup komponen sudah diperbarui.',
+ 'failure' => 'Ada masalah dengan grup komponen ini.',
+ ],
+ ],
+ ],
+
+ // Metrics
+ 'metrics' => [
+ 'metrics' => 'Metrik',
+ 'add' => [
+ 'title' => 'Buat metrik',
+ 'success' => 'Metrik sudah dibuat.',
+ 'failure' => 'Ada masalah dengan metrik ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Edit metrik',
+ 'success' => 'Metrik sudah diperbarui.',
+ 'failure' => 'Ada masalah dengan metrik ini.',
+ ],
+ ],
+
+ // Team
+ 'team' => [
+ 'team' => 'Tim',
+ 'member' => 'Anggota',
+ 'profile' => 'Profil',
+ 'description' => 'Anggota Tim akan bisa menambahkan, mengubah & mengedit komponen dan insiden.',
+ 'add' => [
+ 'title' => 'Tambahkan Anggota Tim',
+ 'success' => 'Anggota Tim sudah ditambahkan.',
+ 'failure' => 'Ada masalah dengan komponen ini.',
+ ],
+ 'edit' => [
+ 'title' => 'Perbarui profil',
+ 'success' => 'Profil sudah diperbarui.',
+ 'failure' => 'Ada masalah saat memperbarui.',
+ ],
+ ],
+
+ // Settings
+ 'settings' => [
+ 'settings' => 'Pengaturan',
+ 'app-setup' => [
+ 'app-setup' => 'Pengaturan Aplikasi',
+ 'images-only' => 'Hanya gambar yang bisa diunggah.',
+ 'too-big' => 'Berkas yang anda unggah terlalu besar. Mohon unggah gambar dengan ukuran tidak lebih dari :size',
+ ],
+ 'security' => [
+ 'security' => 'Keamanan',
+ 'two-factor' => 'User tanpa otentikasi dua-faktor',
+ ],
+ 'stylesheet' => [
+ 'stylesheet' => 'Stylesheet',
+ ],
+ 'theme' => [
+ 'theme' => 'Theme',
+ ],
+ 'edit' => [
+ 'success' => 'Pengaturan sudah disimpan.',
+ 'failure' => 'Pengaturan tidak bisa disimpan.',
+ ],
+ ],
+
+ // Login
+ 'login' => [
+ 'login' => 'Login',
+ 'logged_in' => 'Anda sudah login.',
+ 'welcome' => 'Halo!',
+ 'two-factor' => 'Silakan masukkan token anda.',
+ ],
+
+ // Sidebar footer
+ 'help' => 'Panduan',
+ 'status_page' => 'Halaman Status',
+ 'logout' => 'Logout',
+
+ // Notifications
+ 'notifications' => [
+ 'notifications' => 'Notifikasi',
+ 'awesome' => 'Keren.',
+ 'whoops' => 'Waduh.',
+ ],
+
+ // Welcome modal
+ 'welcome' => [
+ 'welcome' => 'Selamat Datang di Cachet',
+ 'message' => 'Halaman status anda hampir siap! Anda masih perlu mengkonfigurasi beberapa pengaturan',
+ 'close' => 'Langsung ke dashboard saja',
+ 'steps' => [
+ 'component' => 'Buat komponen',
+ 'incident' => 'Buat insiden',
+ 'customize' => 'Kustomisasi',
+ 'team' => 'Tambah user',
+ 'api' => 'Buat token API',
+ 'two-factor' => 'Otentikasi Dua Faktor',
+ ],
+ ],
+
+];
diff --git a/resources/lang/id/errors.php b/resources/lang/id/errors.php
new file mode 100644
index 00000000..314b1db6
--- /dev/null
+++ b/resources/lang/id/errors.php
@@ -0,0 +1,25 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+ 'not-found' => [
+ 'code' => '404',
+ 'title' => 'Halaman ini hilang!',
+ 'message' => 'Maaf, halaman yang diinginkan tidak ditemukan. Periksa apakah ada kesalahan URL lalu coba lagi.',
+ 'link' => 'Kembali ke depan',
+ ],
+ 'unauthorized' => [
+ 'code' => '401',
+ 'title' => 'Tidak dibolehkan',
+ 'message' => 'Maaf, anda perlu kewenangan admin untuk melihat halaman ini.',
+ 'link' => 'Kembali ke depan',
+ ],
+];
diff --git a/resources/lang/id/forms.php b/resources/lang/id/forms.php
new file mode 100644
index 00000000..71f9fcf5
--- /dev/null
+++ b/resources/lang/id/forms.php
@@ -0,0 +1,136 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ // Setup form fields
+ 'setup' => [
+ 'email' => 'Email',
+ 'username' => 'Username',
+ 'password' => 'Password',
+ 'site_name' => 'Nama Situs',
+ 'site_domain' => 'Domain',
+ 'site_timezone' => 'Pilih Zona Waktu',
+ 'site_locale' => 'Pilih Bahasa',
+ 'enable_google2fa' => 'Aktifkan Otentikasi Dua Faktor dengan Google',
+ ],
+
+ // Login form fields
+ 'login' => [
+ 'email' => 'Email',
+ 'password' => 'Password',
+ '2fauth' => 'Kode Otentikasi',
+ 'invalid' => 'Email atau password tidak benar',
+ 'invalid-token' => 'Token tidak benar',
+ 'cookies' => 'Mohon aktifkan cookies untuk login.',
+ ],
+
+ // Incidents form fields
+ 'incidents' => [
+ 'name' => 'Nama',
+ 'status' => 'Status',
+ 'component' => 'Komponen',
+ 'message' => 'Pesan',
+ 'message-help' => 'Anda juga bisa menggunakan Markdown.',
+ 'scheduled_at' => 'Berapa lama pemeliharaan ini dijadwalkan?',
+
+ 'templates' => [
+ 'name' => 'Nama',
+ 'template' => 'Template',
+ ],
+ ],
+
+ // Components form fields
+ 'components' => [
+ 'name' => 'Nama',
+ 'status' => 'Status',
+ 'group' => 'Grup',
+ 'description' => 'Deskripsi',
+ 'link' => 'Link',
+ 'tags' => 'Tag',
+ 'tags-help' => 'Pisahkan dengan koma.',
+
+ 'groups' => [
+ 'name' => 'Nama',
+ ],
+ ],
+
+ // Metric form fields
+ 'metrics' => [
+ 'name' => 'Nama',
+ 'suffix' => 'Akhiran',
+ 'description' => 'Deskripsi',
+ 'description-help' => 'Anda juga bisa menggunakan Markdown.',
+ 'display-chart' => 'Tampilkan grafik di halaman status?',
+ 'default-value' => 'Nilai default',
+ 'calc_type' => 'Kalkulasi metrik',
+ 'type_sum' => 'Jumlah',
+ 'type_avg' => 'Rata-rata',
+
+ 'points' => [
+ 'value' => 'Nilai',
+ ],
+ ],
+
+ // Settings
+ 'settings' => [
+ /// Application setup
+ 'app-setup' => [
+ 'site-name' => 'Nama Situs',
+ 'site-url' => 'URL',
+ 'site-timezone' => 'Zona Waktu',
+ 'site-locale' => 'Bahasa',
+ 'date-format' => 'Format Tanggal',
+ 'display-graphs' => 'Tampilkan grafik di halaman status?',
+ 'about-this-page' => 'Tentang halaman ini',
+ 'days-of-incidents' => 'Berapa hari insiden akan ditampilkan?',
+ 'banner' => 'Gambar Banner',
+ 'banner-help' => 'Disarankan gambar yang anda unggah tidak lebih lebar dari 930px.',
+ 'google-analytics' => 'Kode Google Analytics',
+ ],
+ 'security' => [
+ 'allowed-domains' => 'Domain yang dibolehkan',
+ 'allowed-domains-help' => 'Pisahkan dengan koma. Domain yang ada di atas otomatis akan dibolehkan.',
+ ],
+ 'stylesheet' => [
+ 'custom-css' => 'Stylesheet Kustom',
+ ],
+ 'theme' => [
+ 'background-color' => 'Warna Latar',
+ 'text-color' => 'Warna Teks',
+ ],
+ ],
+
+ 'user' => [
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'api-token' => 'Token API',
+ 'api-token-help' => 'Pembuatan ulang token API akan bermasalah jika sudah ada aplikasi lain yang mengakses Cachet.',
+ '2fa' => [
+ 'help' => 'Mengaktifkan otentikasi dua faktor akan memperkuat keamanan akun anda. Anda perlu mengunduh Google Authenticator atau app sejenis di gadget anda. Saat login anda akan ditanyakan untuk mengisi token yang dibuat oleh app tersebut.',
+ ],
+ ],
+
+ // Buttons
+ 'add' => 'Tambah',
+ 'save' => 'Simpan',
+ 'update' => 'Perbarui',
+ 'create' => 'Buat',
+ 'edit' => 'Edit',
+ 'delete' => 'Hapus',
+ 'submit' => 'Kirim',
+ 'cancel' => 'Batalkan',
+ 'remove' => 'Buang',
+
+ // Other
+ 'optional' => '* Tidak wajib',
+];
diff --git a/resources/lang/id/pagination.php b/resources/lang/id/pagination.php
new file mode 100644
index 00000000..d22a65d4
--- /dev/null
+++ b/resources/lang/id/pagination.php
@@ -0,0 +1,28 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ /*
+ |--------------------------------------------------------------------------
+ | Pagination Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used by the paginator library to build
+ | the simple pagination links. You are free to change them to anything
+ | you want to customize your views to better match your application.
+ |
+ */
+
+ 'previous' => '« Sebelumnya',
+ 'next' => 'Selanjutnya »',
+
+];
diff --git a/resources/lang/id/reminders.php b/resources/lang/id/reminders.php
new file mode 100644
index 00000000..0a9c5dae
--- /dev/null
+++ b/resources/lang/id/reminders.php
@@ -0,0 +1,31 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ /*
+ |--------------------------------------------------------------------------
+ | Password Reminder Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are the default lines which match reasons
+ | that are given by the password broker for a password update attempt
+ | has failed, such as for an invalid token or invalid new password.
+ |
+ */
+
+ 'password' => 'Password minimal enam karakter dan diisi dua kali dengan sama persis.',
+ 'user' => 'User dengan alamat e-mail ini tidak ditemukan.',
+ 'token' => 'Token pembuatan password tidak benar.',
+ 'sent' => 'Pengingat password sudah dikirim!',
+ 'reset' => 'Password sudah dibuat ulang!',
+
+];
diff --git a/resources/lang/id/setup.php b/resources/lang/id/setup.php
new file mode 100644
index 00000000..e8fd208f
--- /dev/null
+++ b/resources/lang/id/setup.php
@@ -0,0 +1,23 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+ 'setup' => 'Instalasi',
+ 'title' => 'Instalasi Cachet',
+ 'service_details' => 'Detail Layanan',
+ 'status_page_setup' => 'Penyiapan Halaman Status',
+ 'show_support' => 'Tunjukkan dukungan untuk Cachet? Tampilkan catatan di bawah halaman yang bertaut ke situs Cachet.',
+ 'admin_account' => 'Akun Administrator',
+ 'complete_setup' => 'Selesaikan Instalasi',
+ 'completed' => 'Cachet berhasil dikonfigurasi!',
+ 'finish_setup' => 'Ke dashboard',
+ 'allow_tracking' => 'Aktifkan tracking penggunaan anonim?',
+];
diff --git a/resources/lang/id/validation.php b/resources/lang/id/validation.php
new file mode 100644
index 00000000..df54f825
--- /dev/null
+++ b/resources/lang/id/validation.php
@@ -0,0 +1,115 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ /*
+ |--------------------------------------------------------------------------
+ | Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines contain the default error messages used by
+ | the validator class. Some of these rules have multiple versions such
+ | as the size rules. Feel free to tweak each of these messages here.
+ |
+ */
+
+ 'accepted' => 'Anda harus menerima :attribute .',
+ 'active_url' => ':attribute bukan merupakan URL yang benar.',
+ 'after' => ':attribute harus merupakan tanggal setelah :date.',
+ 'alpha' => ':attribute hanya boleh berisi huruf.',
+ 'alpha_dash' => ':attribute hanya boleh berisi huruf, angka dan tanda minus.',
+ 'alpha_num' => ':attribute hanya boleh berisi huruf dan angka.',
+ 'array' => ':attribute harus merupakan array.',
+ 'before' => ':attribute harus merupakan tanngga sebelum :date.',
+ 'between' => [
+ 'numeric' => ':attribute harus antara :min dan :max.',
+ 'file' => ':attribute harus antara :min dan :max kilobyte.',
+ 'string' => ':attribute harus antara :min dan :max karakter.',
+ 'array' => ':attribute harus antara :min dan :max item.',
+ ],
+ 'boolean' => 'Kotak :attribute harus berupa true atau false.',
+ 'confirmed' => 'Kedua :attribute tidak sama.',
+ 'date' => ':attribute bukan merupakan tanggal yang benar.',
+ 'date_format' => ':attribute tidak sesuai dengan format :format.',
+ 'different' => ':attribute dan :other harus beda.',
+ 'digits' => ':attribute harus terdiri dari :digits digit.',
+ 'digits_between' => ':attribute harus antara :min dan :max digit.',
+ 'email' => ':attribute harus merupakan alamat email yang benar.',
+ 'exists' => ':attribute yang dipilih tidak benar.',
+ 'image' => ':attribute harus merupakan gambar.',
+ 'in' => ':attribute yang dipilih tidak benar.',
+ 'integer' => ':attribute harus merupakan bilangan bulat.',
+ 'ip' => ':attribute harus merupakan alamat IP yang benar.',
+ 'max' => [
+ 'numeric' => ':attribute tidak boleh lebih dari :max.',
+ 'file' => ':attribute tidak boleh lebih dari :max kilobyte.',
+ 'string' => ':attribute tidak boleh lebih dari :max karakter.',
+ 'array' => ':attribute tidak boleh lebih dari :max item.',
+ ],
+ 'mimes' => ':attribute harus merupakan jenis berkas: :values.',
+ 'min' => [
+ 'numeric' => ':attribute minimal harus :min.',
+ 'file' => ':attribute minimal harus :min kilobyte.',
+ 'string' => ':attribute minimal harus :min karakter.',
+ 'array' => ':attribute minimal harus :min item.',
+ ],
+ 'not_in' => ':attribute yang dipilih tidak benar.',
+ 'numeric' => ':attribute harus merupakan angka.',
+ 'regex' => 'Format :attribute tidak benar.',
+ 'required' => ':attribute belum diisi.',
+ 'required_if' => ':attribute harus diisi jika :other :value.',
+ 'required_with' => ':attribute harus diisi jika ada :values.',
+ 'required_with_all' => ':attribute harus diisi jika ada :values.',
+ 'required_without' => ':attribute harus diisi jika tidak ada :values .',
+ 'required_without_all' => ':attribute harus diisi jika tidak ada :values .',
+ 'same' => ':attribute dan :other tidak sesuai.',
+ 'size' => [
+ 'numeric' => ':attribute harus :size.',
+ 'file' => ':attribute harus :size kilobyte.',
+ 'string' => ':attribute harus :size karakter.',
+ 'array' => ':attribute harus berisi :size item.',
+ ],
+ 'unique' => ':attribute sudah ada.',
+ 'url' => 'Format :attribute tidak benar.',
+ 'timezone' => ':attribute harus merupakan zona yang benar.',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'custom-message',
+ ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+
+ 'attributes' => [],
+
+];