Browse Source

i18n:ID (#7683)

* id translation

* id translation

* Avoid problematic array sentence

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
the7thNightmare 9 months ago
parent
commit
50887f191b
4 changed files with 274 additions and 274 deletions
  1. 1 1
      app/i18n/id/conf.php
  2. 67 67
      app/i18n/id/install.php
  3. 190 190
      app/i18n/id/sub.php
  4. 16 16
      app/i18n/id/user.php

+ 1 - 1
app/i18n/id/conf.php

@@ -12,7 +12,7 @@
 
 return array(
 	'archiving' => array(
-		'_' => 'Mengarsipkan',
+		'_' => 'Pengarsipan',
 		'exception' => 'Pengecualian Pembersihan',
 		'help' => 'Lebih banyak opsi tersedia di pengaturan umpan individu',
 		'keep_favourites' => 'Jangan pernah hapus favorit',

+ 67 - 67
app/i18n/id/install.php

@@ -12,117 +12,117 @@
 
 return array(
 	'action' => array(
-		'finish' => 'Complete installation',	// TODO
-		'fix_errors_before' => 'Please all fix errors before continuing to the next step.',	// TODO
-		'keep_install' => 'Keep previous configuration',	// TODO
-		'next_step' => 'Go to the next step',	// TODO
-		'reinstall' => 'Reinstall FreshRSS',	// TODO
+		'finish' => 'Selesaikan pemasangan',
+		'fix_errors_before' => 'Perbaiki semua galat sebelum melanjutkan.',
+		'keep_install' => 'Gunakan konfigurasi sebelumnya',
+		'next_step' => 'Lanjut',
+		'reinstall' => 'Pasang ulang FreshRSS',
 	),
 	'bdd' => array(
-		'_' => 'Database',	// TODO
+		'_' => 'Basis data',
 		'conf' => array(
-			'_' => 'Database configuration',	// TODO
-			'ko' => 'Verify your database configuration.',	// TODO
-			'ok' => 'Database configuration has been saved.',	// TODO
-		),
-		'host' => 'Host',	// TODO
-		'password' => 'Database password',	// TODO
-		'prefix' => 'Table prefix',	// TODO
-		'type' => 'Type of database',	// TODO
-		'username' => 'Database username',	// TODO
+			'_' => 'Konfigurasi basis data',
+			'ko' => 'Memeriksa konfigurasi basis data Anda.',
+			'ok' => 'Konfigurasi basis data sudah disimpan.',
+		),
+		'host' => 'Hos',
+		'password' => 'Kata sandi basis data',
+		'prefix' => 'Prefiks tabel',
+		'type' => 'Jenis basis data',
+		'username' => 'Nama pengguna basis data',
 	),
 	'check' => array(
-		'_' => 'Checks',	// TODO
-		'already_installed' => 'We have detected that FreshRSS is already installed!',	// TODO
+		'_' => 'Pemeriksaan',
+		'already_installed' => 'Kami mendeteksi bahwa FreshRSS sudah terpasang!',
 		'cache' => array(
-			'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',
-			'ok' => 'Permissions on the cache directory are good.',	// TODO
+			'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
+			'ok' => 'Izin untuk direktori tembolok sudah bagus.',
 		),
 		'ctype' => array(
-			'nok' => 'Cannot find the required library for character type checking (php-ctype).',	// TODO
-			'ok' => 'You have the required library for character type checking (ctype).',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka yang diperlukan untuk pemeriksaan jenis karakter (php-ctype).',
+			'ok' => 'Anda memiliki pustaka untuk pemeriksaan jenis karakter (ctype).',
 		),
 		'curl' => array(
-			'nok' => 'Cannot find the cURL library (php-curl package).',	// TODO
-			'ok' => 'You have the cURL library.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka cURL (php-curl).',
+			'ok' => 'Anda memiliki pustaka cURL.',
 		),
 		'data' => array(
-			'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',
-			'ok' => 'Permissions on the data directory are good.',	// TODO
+			'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
+			'ok' => 'Izin untuk direktori data sudah bagus.',
 		),
 		'dom' => array(
-			'nok' => 'Cannot find the required library to browse the DOM.',	// TODO
-			'ok' => 'You have the required library to browse the DOM.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka yang diperlukan untuk menelusuri DOM.',
+			'ok' => 'Anda memiliki pustaka yang diperlukan untuk menelusuri DOM.',
 		),
 		'favicons' => array(
-			'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',
-			'ok' => 'Permissions on the favicons directory are good.',	// TODO
+			'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
+			'ok' => 'Izin untuk direktori favicon sudah bagus.',
 		),
 		'fileinfo' => array(
-			'nok' => 'Cannot find the PHP fileinfo library (fileinfo package).',	// TODO
-			'ok' => 'You have the fileinfo library.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka PHP fileinfo (fileinfo).',
+			'ok' => 'Anda memiliki pustaka fileinfo.',
 		),
 		'json' => array(
-			'nok' => 'Cannot find the recommended library to parse JSON.',	// TODO
-			'ok' => 'You have the recommended library to parse JSON.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka yang direkomendasikan untuk membaca JSON.',
+			'ok' => 'Anda memiliki pustaka yang direkomendasikan untuk membaca JSON.',
 		),
 		'mbstring' => array(
-			'nok' => 'Cannot find the recommended library mbstring for Unicode.',	// TODO
-			'ok' => 'You have the recommended library mbstring for Unicode.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka mbstring yang direkomendasikan untuk Unicode.',
+			'ok' => 'Anda memiliki pustaka mbstring yang direkomendasikan untuk Unicode.',
 		),
 		'pcre' => array(
-			'nok' => 'Cannot find the required library for regular expressions (php-pcre).',	// TODO
-			'ok' => 'You have the required library for regular expressions (PCRE).',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka untuk ekspresi regular (regex) (php-pcre).',
+			'ok' => 'Anda memiliki pustaka untuk ekspresi regular (regex) (PCRE).',
 		),
 		'pdo' => array(
-			'nok' => 'Cannot find PDO or one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',	// TODO
-			'ok' => 'You have PDO and at least one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',	// TODO
+			'nok' => 'Tidak dapat menemukan PDO atau sejenisnya untuk basis data yang didukung (pdo_mysql, pdo_sqlite, pdo_pgsql).',
+			'ok' => 'Anda memiliki PDO atau sejenisnya untuk basis data yang didukung (pdo_mysql, pdo_sqlite, pdo_pgsql).',
 		),
 		'php' => array(
-			'nok' => 'Your PHP version is %s, but FreshRSS requires at least version %s.',	// TODO
-			'ok' => 'Your PHP version, %s, is compatible with FreshRSS.',	// TODO
+			'nok' => 'Versi PHP Anda adalah %s tapi FreshRSS membutuhkan setidaknya versi %s.',
+			'ok' => 'Versi PHP Anda (%s) cocok dengan FreshRSS.',
 		),
-		'reload' => 'Check again',	// TODO
+		'reload' => 'Periksa kembali',
 		'tmp' => array(
-			'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',	// TODO
-			'ok' => 'Permissions on the temp directory are good.',	// TODO
+			'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
+			'ok' => 'Izin pada direktori tmp sudah bagus.',
 		),
-		'unknown_process_username' => 'unknown',	// TODO
+		'unknown_process_username' => 'tidak diketahui',
 		'users' => array(
-			'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',	// TODO
-			'ok' => 'Permissions on the users directory are good.',	// TODO
+			'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
+			'ok' => 'Izin pada direktori pengguna sudah bagus.',
 		),
 		'xml' => array(
-			'nok' => 'Cannot find the required library to parse XML.',	// TODO
-			'ok' => 'You have the required library to parse XML.',	// TODO
+			'nok' => 'Tidak dapat menemukan pustaka yang diperlukan untuk membaca XML.',
+			'ok' => 'Anda memiliki pustaka yang diperlukan untuk membaca XML.',
 		),
 	),
 	'conf' => array(
-		'_' => 'General configuration',	// TODO
-		'ok' => 'General configuration has been saved.',	// TODO
+		'_' => 'Konfigurasi umum',
+		'ok' => 'Konfigurasi umum sudah disimpan.',
 	),
-	'congratulations' => 'Congratulations!',	// TODO
+	'congratulations' => 'Selamat datang!',
 	'default_user' => array(
-		'_' => 'Username of the default user',	// TODO
-		'max_char' => 'maximum 16 alphanumeric characters',	// TODO
+		'_' => 'Nama pengguna untuk pengguna baku',
+		'max_char' => 'maksimum 16 karakter alpanumerik',
 	),
-	'fix_errors_before' => 'Please fix errors before continuing to the next step.',	// TODO
-	'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled',	// TODO
+	'fix_errors_before' => 'Perbaiki galat sebelum melanjutkan.',
+	'javascript_is_better' => 'FreshRSS lebih baik dengan JavaScript diaktifkan',
 	'js' => array(
-		'confirm_reinstall' => 'You will lose your previous configuration by reinstalling FreshRSS. Are you sure you want to continue?',	// TODO
+		'confirm_reinstall' => 'Anda akan kehilangan konfigurasi sebelumnya jika Anda memasang ulang FreshRSS. Apakah Anda yakin?',
 	),
 	'language' => array(
-		'_' => 'Language',	// TODO
-		'choose' => 'Choose a language for FreshRSS',	// TODO
-		'defined' => 'Language has been defined.',	// TODO
+		'_' => 'Bahasa',
+		'choose' => 'Pilih bahasa untuk FreshRSS',
+		'defined' => 'Bahasa sudah dipilih.',
 	),
-	'missing_applied_migrations' => 'Something went wrong; you should create an empty file <em>%s</em> manually.',	// TODO
-	'ok' => 'The installation process was successful.',	// TODO
+	'missing_applied_migrations' => 'Ada sesuatu yang salah, Anda harus membuat berkas kosong <em>%s</em> secara manual.',
+	'ok' => 'Proses pemasangan sukses.',
 	'session' => array(
-		'nok' => 'The web server seems to be incorrectly configured for cookies required for PHP sessions!',	// TODO
+		'nok' => 'Sepertinya konfigurasi peladen webnya salah untuk kuki yang dibutuhkan untuk sesi PHP!',
 	),
-	'step' => 'step %d',	// TODO
-	'steps' => 'Steps',	// TODO
-	'this_is_the_end' => 'This is the end',	// TODO
-	'title' => 'Installation · FreshRSS',	// TODO
+	'step' => 'langkah %d',
+	'steps' => 'Langkah-Langkah',
+	'this_is_the_end' => 'Sudah selesai',
+	'title' => 'Pemasangan · FreshRSS',
 );

+ 190 - 190
app/i18n/id/sub.php

@@ -12,285 +12,285 @@
 
 return array(
 	'api' => array(
-		'documentation' => 'Copy the following URL to use it within an external tool.',	// TODO
-		'title' => 'API',	// TODO
+		'documentation' => 'Salin URL berikut untuk menggunakannya di alat eksternal.',
+		'title' => 'API',	// IGNORE
 	),
 	'bookmarklet' => array(
-		'documentation' => 'Drag this button to your bookmarks toolbar or right-click it and choose “Bookmark This Link”. Then click the “Subscribe” button in any page you want to subscribe to.',	// TODO
-		'label' => 'Subscribe',	// TODO
-		'title' => 'Bookmarklet',	// TODO
+		'documentation' => 'Seret tombol ini ke bilah alat markah Anda atau klik kanan dan pilih "Markahi Tautan". Kemudian klik "Langgan" di halaman yang ingin Anda langgan',
+		'label' => 'Langgan',
+		'title' => 'Bookmarklet',	// IGNORE
 	),
 	'category' => array(
-		'_' => 'Category',	// TODO
-		'add' => 'Add a category',	// TODO
-		'archiving' => 'Archiving',	// TODO
+		'_' => 'Kategori',
+		'add' => 'Tambah kategori',
+		'archiving' => 'Pengarsipan',
 		'dynamic_opml' => array(
-			'_' => 'Dynamic OPML',	// TODO
-			'help' => 'Provide the URL to an <a href="http://opml.org/" target="_blank">OPML file</a> to dynamically populate this category with feeds',	// TODO
+			'_' => 'OPML dinamis',
+			'help' => 'Sediakan URL ke <a href="http://opml.org/" target="_blank">berkas OPML</a> untuk memasukkan umpan ke kategori ini secara dinamis',
 		),
-		'empty' => 'Empty category',	// TODO
-		'expand' => 'Expand category',	// TODO
-		'information' => 'Information',	// TODO
-		'open' => 'Open category',	// TODO
-		'opml_url' => 'OPML URL',	// TODO
-		'position' => 'Display position',	// TODO
-		'position_help' => 'To control category sort order',	// TODO
-		'title' => 'Title',	// TODO
+		'empty' => 'Kategori kosong',
+		'expand' => 'Kembangkan kategori',
+		'information' => 'Informasi',
+		'open' => 'Buka kategori',
+		'opml_url' => 'URL OPML',
+		'position' => 'Posisi tampilan',
+		'position_help' => 'Untuk mengatur urutan pengurutan kategori',
+		'title' => 'Judul',
 	),
 	'feed' => array(
-		'accept_cookies' => 'Accept cookies',	// TODO
-		'accept_cookies_help' => 'Allow the feed server to set cookies (stored in memory for the duration of the request only)',	// TODO
-		'add' => 'Add a feed',	// TODO
-		'advanced' => 'Advanced',	// TODO
-		'archiving' => 'Archiving',	// TODO
+		'accept_cookies' => 'Terima kuki',
+		'accept_cookies_help' => 'Perbolehkan peladen umpan untuk mengirimkan kuki (hanya disimpan di memori selama durasi permintaan)',
+		'add' => 'Tambah umpan',
+		'advanced' => 'Lebih lanjut',
+		'archiving' => 'Pengarsipan',
 		'auth' => array(
-			'configuration' => 'Login',	// TODO
-			'help' => 'Allows access to HTTP protected RSS feeds',	// TODO
-			'http' => 'HTTP Authentication',	// TODO
-			'password' => 'HTTP password',	// TODO
-			'username' => 'HTTP username',	// TODO
+			'configuration' => 'Masuk',
+			'help' => 'Agar dapat bisa mengakses umpan RSS yang dilindungi oleh autentikasi HTTP',
+			'http' => 'Autentikasi HTTP',
+			'password' => 'Kata sandi HTTP',
+			'username' => 'Nama pengguna HTTP',
 		),
-		'clear_cache' => 'Always clear cache',	// TODO
+		'clear_cache' => 'Selalu bersihkan tembolok',
 		'content_action' => array(
-			'_' => 'Content action when fetching the article content',	// TODO
-			'append' => 'Add after existing content',	// TODO
-			'prepend' => 'Add before existing content',	// TODO
-			'replace' => 'Replace existing content',	// TODO
+			'_' => 'Yang dilakukan ketika mengambil konten artikel',
+			'append' => 'Tambahkan setelah konten yang telah ada',
+			'prepend' => 'Tambahkan sebelum konten yang telah ada',
+			'replace' => 'Timpa konten yang telah ada',
 		),
-		'content_retrieval' => 'Content retrieval',	// TODO
-		'css_cookie' => 'Use Cookies when fetching the article content',	// TODO
-		'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',	// TODO
-		'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)',	// TODO
-		'css_path' => 'Article CSS selector on original website',	// TODO
+		'content_retrieval' => 'Pengambilan konten',
+		'css_cookie' => 'Gunakan kuki ketika mengambil konten artikel',
+		'css_cookie_help' => 'Contoh: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
+		'css_help' => 'Mengambil bagian artikel sesuai CSS yang dimasukkan (awas, memerlukan lebih banyak waktu!)',
+		'css_path' => 'Selektor CSS artikel di situs aslinya',
 		'css_path_filter' => array(
-			'_' => 'CSS selector of the elements to remove',	// TODO
-			'help' => 'A CSS selector may be a list such as: <kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>',	// TODO
+			'_' => 'Selektor CSS artikel untuk konten yang akan dihapus',
+			'help' => 'Selektor CSS bisa juga berupa daftar seperti: <kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>',
 		),
-		'description' => 'Description',	// TODO
-		'empty' => 'This feed is empty. Please verify that it is still maintained.',	// TODO
-		'error' => 'This feed has encountered a problem. If this situation persists, please verify that it is still reachable.',	// TODO
+		'description' => 'Deskripsi',
+		'empty' => 'Umpan ini kosong. Periksa apakah umpan ini masih ada',
+		'error' => 'Ada masalah dengan umpan ini. Jika masih terus-menerus, periksa apakah umpan ini masih ada.',
 		'export-as-opml' => array(
-			'download' => 'Download',	// TODO
-			'help' => 'XML file (data subset. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">See documentation</a>)',	// TODO
-			'label' => 'Export as OPML',	// TODO
+			'download' => 'Unduh',
+			'help' => 'Berkas XML (subset data. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">Lihat dokumentasi</a>)',
+			'label' => 'Unduh dalam bentuk OPML',
 		),
 		'filteractions' => array(
-			'_' => 'Filter actions',	// TODO
-			'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.',	// TODO
+			'_' => 'Tindakan penyaringan',
+			'help' => 'Tulis satu penyaringan pencarian per baris. Operator <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">lihat dokumentasi</a>.',
 		),
-		'http_headers' => 'HTTP Headers',	// TODO
-		'http_headers_help' => 'Headers are separated by a newline, and the name and value of a header are separated by a colon (e.g: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',	// TODO
-		'information' => 'Information',	// TODO
-		'keep_min' => 'Minimum number of articles to keep',	// TODO
+		'http_headers' => 'Tajuk HTTP',
+		'http_headers_help' => 'Tajuk dipisahkan dengan baris baru dan nama dan nilai dari tajuk dipisahkan dengan titik dua (contoh: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',
+		'information' => 'Informasi',
+		'keep_min' => 'Jumlah minimum artikel yang harus disimpan',
 		'kind' => array(
-			'_' => 'Type of feed source',	// TODO
+			'_' => 'Jenis sumber umpan',
 			'html_json' => array(
-				'_' => 'HTML + XPath + JSON dot notation (JSON in HTML)',	// TODO
+				'_' => 'HTML + XPath + notasi dot JSON (JSON dalam HTML)',
 				'xpath' => array(
-					'_' => 'XPath for JSON in HTML',	// TODO
-					'help' => 'Example: <code>normalize-space(//script[@type="application/json"])</code> (single JSON)<br />or: <code>//script[@type="application/ld+json"]</code> (one JSON object per article)',	// TODO
+					'_' => 'XPath untuk JSON dalam HTML',
+					'help' => 'Contoh: <code>normalize-space(//script[@type="application/json"])</code> (satu JSON)<br />atau: <code>//script[@type="application/ld+json"]</code> (satu objek JSON per artikel)',
 				),
 			),
 			'html_xpath' => array(
-				'_' => 'HTML + XPath (Web scraping)',	// TODO
+				'_' => 'HTML + XPath (Web scraping)',	// IGNORE
 				'feed_title' => array(
-					'_' => 'feed title',	// TODO
-					'help' => 'Example: <code>//title</code> or a static string: <code>"My custom feed"</code>',	// TODO
+					'_' => 'judul umpan',
+					'help' => 'Contoh: <code>//title</code> atau kata statis: <code>"Umpan Saya"</code>',
 				),
-				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> is a standard query language for advanced users, and which FreshRSS supports to enable Web scraping.',	// TODO
+				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> adalah bahasa kueri standar untuk pengguna tingkat lanjut dan yang mana FreshRSS dukung untuk web scraping.',
 				'item' => array(
-					'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>',	// TODO
-					'help' => 'Example: <code>//div[@class="news-item"]</code>',	// TODO
+					'_' => 'mencari <strong>item</strong> artikel<br /><small>(paling penting)</small>',
+					'help' => 'Contoh: <code>//div[@class="news-item"]</code>',
 				),
 				'item_author' => array(
-					'_' => 'item author',	// TODO
-					'help' => 'Can also be a static string. Example: <code>"Anonymous"</code>',	// TODO
+					'_' => 'penulis',
+					'help' => 'Bisa juga kata statis. Contoh: <code>"Anonymous"</code>',
 				),
-				'item_categories' => 'item tags',	// TODO
+				'item_categories' => 'label',
 				'item_content' => array(
-					'_' => 'item content',	// TODO
-					'help' => 'Example to take the full item: <code>.</code>',	// TODO
+					'_' => 'konten',
+					'help' => 'Contoh untuk mengambil konten penuh: <code>.</code>',
 				),
 				'item_thumbnail' => array(
-					'_' => 'item thumbnail',	// TODO
-					'help' => 'Example: <code>descendant::img/@src</code>',	// TODO
+					'_' => 'keluku',
+					'help' => 'Contoh: <code>descendant::img/@src</code>',
 				),
 				'item_timeFormat' => array(
-					'_' => 'Custom date/time format',	// TODO
-					'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>',	// TODO
+					'_' => 'Format tanggal dan waktu kustom',
+					'help' => 'Opsional. Format yang didukung oleh <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> seperti <code>d-m-Y H:i:s</code>',
 				),
 				'item_timestamp' => array(
-					'_' => 'item date',	// TODO
-					'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',	// TODO
+					'_' => 'tanggal',
+					'help' => 'Hasil akan diproses oleh <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
 				),
 				'item_title' => array(
-					'_' => 'item title',	// TODO
-					'help' => 'Use in particular the <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath axis</a> <code>descendant::</code> like <code>descendant::h2</code>',	// TODO
+					'_' => 'judul',
+					'help' => 'Gunakan khususnya <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath axis</a> <code>descendant::</code> seperti <code>descendant::h2</code>',
 				),
 				'item_uid' => array(
-					'_' => 'item unique ID',	// TODO
-					'help' => 'Optional. Example: <code>descendant::div/@data-uri</code>',	// TODO
+					'_' => 'ID unik',
+					'help' => 'Opsional. Contoh: <code>descendant::div/@data-uri</code>',
 				),
 				'item_uri' => array(
-					'_' => 'item link (URL)',	// TODO
-					'help' => 'Example: <code>descendant::a/@href</code>',	// TODO
+					'_' => 'tautan artikel (URL)',
+					'help' => 'Contoh: <code>descendant::a/@href</code>',
 				),
-				'relative' => 'XPath (relative to item) for:',	// TODO
-				'xpath' => 'XPath for:',	// TODO
+				'relative' => 'XPath (relatif ke item) untuk:',
+				'xpath' => 'XPath untuk:',
 			),
 			'json_dotnotation' => array(
-				'_' => 'JSON (dot notation)',	// TODO
+				'_' => 'JSON (notasi dot)',
 				'feed_title' => array(
-					'_' => 'feed title',	// TODO
-					'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>',	// TODO
+					'_' => 'judul umpan',
+					'help' => 'Contoh: <code>meta.title</code> atau kata statis: <code>"Umpan Saya"</code>',
 				),
-				'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)',	// TODO
+				'help' => 'Notasi dot JSON menggunakan dot (titik) antara objek dan kurung untuk array, contoh <code>data.items[0].title</code>',
 				'item' => array(
-					'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>',	// TODO
-					'help' => 'JSON path to the array containing the items, e.g. <code>$</code> or <code>newsItems</code>',	// TODO
+					'_' => 'mencari <strong>item</strong> artikel<br /><small>(paling penting)</small>',
+					'help' => 'Jalur JSON ke array yang mengandung item tersebut, contoh: <code>$</code> atau <code>newsItems</code>',
 				),
-				'item_author' => 'item author',	// TODO
-				'item_categories' => 'item tags',	// TODO
+				'item_author' => 'penulis',
+				'item_categories' => 'label',
 				'item_content' => array(
-					'_' => 'item content',	// TODO
-					'help' => 'Key under which the content is found, e.g. <code>content</code>',	// TODO
+					'_' => 'konten',
+					'help' => 'Objek dimana konten ditemukan <code>content</code>',
 				),
 				'item_thumbnail' => array(
-					'_' => 'item thumbnail',	// TODO
-					'help' => 'Example: <code>image</code>',	// TODO
+					'_' => 'keluku',
+					'help' => 'Contoh: <code>image</code>',
 				),
 				'item_timeFormat' => array(
-					'_' => 'Custom date/time format',	// TODO
-					'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>',	// TODO
+					'_' => 'Format tanggal dan waktu kustom',
+					'help' => 'Opsional. Format yang didukung oleh <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> seperti <code>d-m-Y H:i:s</code>',
 				),
 				'item_timestamp' => array(
-					'_' => 'item date',	// TODO
-					'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',	// TODO
+					'_' => 'tanggal',
+					'help' => 'Hasil akan diproses oleh <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
 				),
-				'item_title' => 'item title',	// TODO
-				'item_uid' => 'item unique ID',	// TODO
+				'item_title' => 'judul',
+				'item_uid' => 'ID unik',
 				'item_uri' => array(
-					'_' => 'item link (URL)',	// TODO
-					'help' => 'Example: <code>permalink</code>',	// TODO
+					'_' => 'tautan artikel (URL)',
+					'help' => 'Contoh: <code>permalink</code>',
 				),
-				'json' => 'dot notation for:',	// TODO
-				'relative' => 'dot notated path (relative to item) for:',	// TODO
+				'json' => 'notasi dot untuk:',
+				'relative' => 'jalur notasi dot (relatif ke item) untuk:',
 			),
-			'jsonfeed' => 'JSON Feed',	// TODO
-			'rss' => 'RSS / Atom (default)',	// TODO
-			'xml_xpath' => 'XML + XPath',	// TODO
+			'jsonfeed' => 'Umpan JSON',
+			'rss' => 'RSS / Atom (baku)',
+			'xml_xpath' => 'XML + XPath',	// IGNORE
 		),
 		'maintenance' => array(
-			'clear_cache' => 'Clear cache',	// TODO
-			'clear_cache_help' => 'Clear the cache for this feed.',	// TODO
-			'reload_articles' => 'Reload articles',	// TODO
-			'reload_articles_help' => 'Reload that many articles and fetch complete content if a selector is defined.',	// TODO
-			'title' => 'Maintenance',	// TODO
+			'clear_cache' => 'Bersihkan tembolok',
+			'clear_cache_help' => 'Bersihkan tembolok untuk umpan ini.',
+			'reload_articles' => 'Muat ulang artikel',
+			'reload_articles_help' => 'Muat ulang artikel sesuai angka yang dimasukkan dan ambil konten lengkap jika selektor diberikan.',
+			'title' => 'Pemeliharaan',
 		),
-		'max_http_redir' => 'Max HTTP redirects',	// TODO
-		'max_http_redir_help' => 'Set to 0 or leave blank to disable, -1 for unlimited redirects',	// TODO
+		'max_http_redir' => 'Maksimum pengalihan HTTP',
+		'max_http_redir_help' => 'Atur ke 0 atau biarkan kosong untuk menonaktifkannya, -1 untuk pengalihan tak terhingga.',
 		'method' => array(
-			'_' => 'HTTP Method',	// TODO
+			'_' => 'Metode HTTP',
 		),
-		'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>',	// TODO
-		'method_postparams' => 'Payload for POST',	// TODO
-		'moved_category_deleted' => 'When you remove a category, its feeds are automatically classified under <em>%s</em>.',	// TODO
+		'method_help' => 'Metode jaringan POST memiliki dukungan otomatis untuk <code>application/x-www-form-urlencoded</code> dan <code>application/json</code>',
+		'method_postparams' => 'Metode untuk POST',
+		'moved_category_deleted' => 'Ketika Anda menghapus sebuah kategori, umpan yang ada di dalamnya secara otomatis akan berada di bawah <em>%s</em>.',
 		'mute' => array(
-			'_' => 'mute',	// TODO
-			'state_is_muted' => 'This feed is muted',	// TODO
+			'_' => 'bisukan',
+			'state_is_muted' => 'Umpan ini dibisukan',
 		),
-		'no_selected' => 'No feed selected.',	// TODO
-		'number_entries' => '%d articles',	// TODO
-		'open_feed' => 'Open feed %s',	// TODO
-		'path_entries_conditions' => 'Conditions for content retrieval',	// TODO
+		'no_selected' => 'Tidak ada umpan yang dipilih.',
+		'number_entries' => '%d artikel',
+		'open_feed' => 'Buka umpan %s',
+		'path_entries_conditions' => 'Kondisi untuk pengambilan konten',
 		'priority' => array(
-			'_' => 'Visibility',	// TODO
-			'archived' => 'Do not show (archived)',	// TODO
-			'category' => 'Show in its category',	// TODO
-			'important' => 'Show in important feeds',	// TODO
-			'main_stream' => 'Show in main stream',	// TODO
+			'_' => 'Ketampakan',
+			'archived' => 'Jangan tampilkan (diarsipkan)',
+			'category' => 'Tampilkan hanya di kategorinya saja',
+			'important' => 'Tampilkan di umpan penting',
+			'main_stream' => 'Tampilkan di bagian utama',
 		),
-		'proxy' => 'Set a proxy for fetching this feed',	// TODO
-		'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)',	// TODO
+		'proxy' => 'Atur proksi untuk mengambil umpan ini',
+		'proxy_help' => 'Pilih protokol (contoh: SOCKS5) dan masukkan alamat proksi (contoh: <kbd>127.0.0.1:1080</kbd> atau <kbd>username:password@127.0.0.1:1080</kbd>)',
 		'selector_preview' => array(
-			'show_raw' => 'Show source code',	// TODO
-			'show_rendered' => 'Show content',	// TODO
+			'show_raw' => 'Tampilkan kode sumber',
+			'show_rendered' => 'Tampilkan konten',
 		),
 		'show' => array(
-			'all' => 'All feeds',	// TODO
-			'error' => 'Show only feeds with errors',	// TODO
+			'all' => 'Semua umpan',
+			'error' => 'Tampilkan hanya umpan dengan galat',
 		),
 		'showing' => array(
-			'error' => 'Showing only feeds with errors',	// TODO
+			'error' => 'Menampilkan hanya umpan dengan galat',
 		),
-		'ssl_verify' => 'Verify SSL security',	// TODO
-		'stats' => 'Statistics',	// TODO
-		'think_to_add' => 'You may add some feeds.',	// TODO
-		'timeout' => 'Timeout in seconds',	// TODO
-		'title' => 'Title',	// TODO
-		'title_add' => 'Add an RSS feed',	// TODO
-		'ttl' => 'Do not automatically refresh more often than',	// TODO
+		'ssl_verify' => 'Verifikasi keamanan SSL',
+		'stats' => 'Statistik',
+		'think_to_add' => 'Kamu boleh menambahkan beberapa umpan.',
+		'timeout' => 'Timeout dalam detik',
+		'title' => 'Judul',
+		'title_add' => 'Tambah umpan RSS',
+		'ttl' => 'Jangan perbarui secara otomatis lebih banyak daripada',
 		'unicityCriteria' => array(
-			'_' => 'Article unicity criteria',	// TODO
-			'forced' => '<span title="Block the unicity criteria, even when the feed has duplicate articles">forced</span>',	// TODO
-			'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.',	// TODO
-			'id' => 'Standard ID (default)',	// TODO
-			'link' => 'Link',	// TODO
-			'sha1:link_published' => 'Link + Date',	// TODO
-			'sha1:link_published_title' => 'Link + Date + Title',	// TODO
-			'sha1:link_published_title_content' => 'Link + Date + Title + Content',	// TODO
+			'_' => 'Kriteria Keunikan Artikel',
+			'forced' => '<span title="Blokir kriteria keunikan meski umpan memiliki artikel duplikat">paksa</span>',
+			'help' => 'Relevan untuk umpan yang tidak valid.<br />⚠️ Mengubah ini akan membuat artikel duplikat.',
+			'id' => 'ID standar (baku)',
+			'link' => 'Tautan',
+			'sha1:link_published' => 'Tautan + Tanggal',
+			'sha1:link_published_title' => 'Tautan + Tanggal + Judul',
+			'sha1:link_published_title_content' => 'Tautan + Tanggal + Judul + Konten',
 		),
-		'url' => 'Feed URL',	// TODO
-		'useragent' => 'Set the user agent for fetching this feed',	// TODO
-		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',	// TODO
-		'validator' => 'Check the validity of the feed',	// TODO
-		'website' => 'Website URL',	// TODO
-		'websub' => 'Instant notifications with WebSub',	// TODO
+		'url' => 'URL umpan',
+		'useragent' => 'Atur UA (user agent) untuk mengambil umpan ini',
+		'useragent_help' => 'Contoh: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
+		'validator' => 'Periksa validitas umpan ini',
+		'website' => 'URL situs',
+		'websub' => 'Notifikasi langsung menggunakan WebSub',
 	),
 	'import_export' => array(
 		'export' => array(
-			'_' => 'Export',	// TODO
-			'sqlite' => 'Download user database as SQLite',	// TODO
+			'_' => 'Ekspor',
+			'sqlite' => 'Unduh basis data pengguna dalam bentuk SQLite',
 		),
-		'export_labelled' => 'Export your labeled articles',
-		'export_opml' => 'Export list of feeds (OPML)',	// TODO
-		'export_starred' => 'Export your favorites',
-		'feed_list' => 'List of %s articles',	// TODO
-		'file_to_import' => 'File to import<br />(OPML, JSON or ZIP)',	// TODO
-		'file_to_import_no_zip' => 'File to import<br />(OPML or JSON)',	// TODO
-		'import' => 'Import',	// TODO
-		'starred_list' => 'List of favorite articles',
-		'title' => 'Import / export',	// TODO
+		'export_labelled' => 'Ekspor artikel yang dilabelkan',
+		'export_opml' => 'Ekspor daftar umpan (OPML)',
+		'export_starred' => 'Ekspor favorit Anda',
+		'feed_list' => 'Daftar dari %s artikel',
+		'file_to_import' => 'Berkas untuk diimpor <br />(OPML, JSON atau ZIP)',
+		'file_to_import_no_zip' => 'Berkas untuk diimpor<br />(OPML atau JSON)',
+		'import' => 'Impot',
+		'starred_list' => 'Daftar artikel difavoritkan',
+		'title' => 'Impor / Ekspor',
 	),
 	'menu' => array(
-		'add' => 'Add a feed or category',	// TODO
-		'import_export' => 'Import / export',	// TODO
-		'label_management' => 'Label management',	// TODO
+		'add' => 'Tambah umpan atau kategori',
+		'import_export' => 'Impor / Ekspor',
+		'label_management' => 'Pengelolaan label',
 		'stats' => array(
-			'idle' => 'Idle feeds',	// TODO
-			'main' => 'Main statistics',	// TODO
-			'repartition' => 'Articles repartition',	// TODO
+			'idle' => 'Umpan tak terbarukan',
+			'main' => 'Statistik utama',
+			'repartition' => 'Pengkategorian artikel',
 		),
-		'subscription_management' => 'Subscription management',	// TODO
-		'subscription_tools' => 'Subscription tools',	// TODO
+		'subscription_management' => 'Pengelolaan langganan',
+		'subscription_tools' => 'Alat langganan',
 	),
 	'tag' => array(
-		'auto_label' => 'Add this label to new articles',	// TODO
-		'name' => 'Name',	// TODO
-		'new_name' => 'New name',	// TODO
-		'old_name' => 'Old name',	// TODO
+		'auto_label' => 'Tambahkan label ini ke artikel baru',
+		'name' => 'Nama',
+		'new_name' => 'Nama baru',
+		'old_name' => 'Nama lama',
 	),
 	'title' => array(
-		'_' => 'Subscription management',	// TODO
-		'add' => 'Add a feed or category',	// TODO
-		'add_category' => 'Add a category',	// TODO
-		'add_dynamic_opml' => 'Add dynamic OPML',	// TODO
-		'add_feed' => 'Add a feed',	// TODO
-		'add_label' => 'Add a label',	// TODO
-		'add_opml_category' => 'OPML category name',	// TODO
-		'delete_label' => 'Delete a label',	// TODO
-		'feed_management' => 'RSS feeds management',	// TODO
-		'rename_label' => 'Rename a label',	// TODO
-		'subscription_tools' => 'Subscription tools',	// TODO
+		'_' => 'Pengelolaan langganan',
+		'add' => 'Tambah umpan atau kategori',
+		'add_category' => 'Tambah kategori',
+		'add_dynamic_opml' => 'Tambah OPML dinamis',
+		'add_feed' => 'Tambah umpan',
+		'add_label' => 'Tambah label',
+		'add_opml_category' => 'Nama kategori OPML',
+		'delete_label' => 'Hapus label',
+		'feed_management' => 'Pengelolaan umpan RSS',
+		'rename_label' => 'Ubah nama label',
+		'subscription_tools' => 'Alat langganan',
 	),
 );

+ 16 - 16
app/i18n/id/user.php

@@ -13,30 +13,30 @@
 return array(
 	'email' => array(
 		'feedback' => array(
-			'invalid' => 'Alamat email ini tidak valid.',
-			'required' => 'Diperlukan alamat email.',
+			'invalid' => 'Alamat surel ini tidak valid.',
+			'required' => 'Alamat surel diperlukan.',
 		),
 		'validation' => array(
-			'change_email' => 'Anda dapat mengubah alamat email Anda <a href="%s">di halaman profil</a>.',
-			'email_sent_to' => 'Kami mengirimi Anda email di <strong>%s</strong>. Harap ikuti instruksinya untuk memvalidasi alamat Anda.',
+			'change_email' => 'Anda dapat mengubah alamat surel Anda <a href="%s">di halaman profil</a>.',
+			'email_sent_to' => 'Kami sudah mengirimkan Anda surel ke <strong>%s</strong>. Ikuti petunjuk di surel untuk memvalidasi alamat surel Anda.',
 			'feedback' => array(
-				'email_failed' => 'Kami tidak dapat mengirimi Anda email karena kesalahan konfigurasi server. ',
-				'email_sent' => 'Email telah dikirim ke alamat Anda.',
-				'error' => 'Validasi alamat email gagal.',
-				'ok' => 'Alamat email ini telah divalidasi.',
-				'unnecessary' => 'Alamat email ini sudah divalidasi.',
-				'wrong_token' => 'Alamat email ini gagal divalidasi karena token yang salah.',
+				'email_failed' => 'Kami tidak dapat mengirimi Anda surel dikarenakan kesalahan konfigurasi di peladen. ',
+				'email_sent' => 'Surel sudah dikirim ke surel Anda.',
+				'error' => 'Validasi alamat surel Anda gagal.',
+				'ok' => 'Alamat surel ini sudah divalidasi.',
+				'unnecessary' => 'Alamat surel ini sudah divalidasi.',
+				'wrong_token' => 'Alamat surel ini gagal divalidasi dikarenakan token yang salah.',
 			),
-			'need_to' => 'Anda perlu memvalidasi alamat email Anda sebelum dapat menggunakan %s.',
-			'resend_email' => 'Kirim ulang email',
-			'title' => 'Validasi Alamat Email',
+			'need_to' => 'Anda perlu memvalidasi alamat surel Anda sebelum dapat menggunakan %s.',
+			'resend_email' => 'Kirim ulang surel',
+			'title' => 'Validasi alamat surel',
 		),
 	),
 	'mailer' => array(
 		'email_need_validation' => array(
-			'body' => 'Anda baru saja mendaftar %s,Tetapi Anda masih perlu memvalidasi alamat email Anda.Untuk itu, ikuti saja tautannya:',
+			'body' => 'Anda baru saja mendaftar pada %s, tapi Anda masih perlu memvalidasi alamat surel Anda. Untuk itu, ikuti saja tautannya:',
 			'title' => 'Anda perlu memvalidasi akun Anda',
-			'welcome' => 'Welcome %s,',	// IGNORE
+			'welcome' => 'Selamat datang %s,',
 		),
 	),
 	'password' => array(
@@ -44,7 +44,7 @@ return array(
 	),
 	'tos' => array(
 		'feedback' => array(
-			'invalid' => 'Anda harus menerima ketentuan layanan untuk dapat mendaftar.',
+			'invalid' => 'Anda harus menyetujui Ketentuan Layanan untuk dapat mendaftar.',
 		),
 	),
 	'username' => array(