diff --git a/CHANGELOG.md b/CHANGELOG.md index 76dd5d0a1..6cadaeb90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ major updates to the project. ### added +- Add Indonesian localization + ([#200](https://github.com/giscus/giscus/pull/200)). - Properly introduce i18n and l10n support ([#199](https://github.com/giscus/giscus/pull/199)). diff --git a/README.id.md b/README.id.md new file mode 100644 index 000000000..55daba7c7 --- /dev/null +++ b/README.id.md @@ -0,0 +1,85 @@ +# [giscus][giscus] + +Sebuah sistem komentar yang diberdayakan oleh [GitHub Discussions][discussions]. Memungkinkan pengunjung meninggalkan komentar dan reaksi pada website Anda melalui GitHub! Terinspirasi dari [utterances][utterances]. + +- [Bersumber terbuka][repo]. 🌏 +- Tidak ada pelacakan, tidak ada iklan, selalu gratis. 📡 🚫 +- Tidak perlu basis data. Semua data disimpan di GitHub Discussions. :octocat: +- Mendukung [tema buatan sendiri][creating-custom-themes]! 🌗 +- Mendukung [banyak bahasa][multiple-languages]. 🌐 +- [Dapat dikonfigurasi secara luas][advanced-usage]. 🔧 +- Otomatis mengambil komentar dan perubahan baru dari GitHub. 🔃 +- [Dapat diinangkan sendiri][self-hosting]! 🤳 + +> **Catatan:**\ +> giscus masih sedang dalam pengembangan aktif. GitHub juga masih aktif mengembangkan Discussions dan API-nya. Oleh karena itu, beberapa fitur giscus mungkin rusak atau berubah seiring waktu. + +## cara kerja + +Ketika giscus dimuat, [API pencarian GitHub Discussions][search-api] digunakan untuk mencari diskusi yang terkait dengan halaman penyemat berdasarkan pemetaan yang dipilih (URL, `pathname`, ``, dll.). Jika diskusi yang terkait tidak ditemukan, bot giscus akan otomatis membuat diskusinya ketika ada orang yang meninggalkan komentar atau reaksi untuk pertama kalinya. + +Untuk berkomentar, pengunjung harus mengizinkan [aplikasi giscus][giscus-app] untuk [berkomentar atas nama mereka][authorization] menggunakan alur GitHub OAuth. Atau, pengunjung dapat meninggalkan komentar pada diskusinya secara langsung di GitHub. Anda dapat memoderasi komentarnya di GitHub. + +[giscus]: https://giscus.app/id +[discussions]: https://docs.github.com/en/discussions +[utterances]: https://github.com/utterance/utterances +[repo]: https://github.com/giscus/giscus +[advanced-usage]: https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md +[creating-custom-themes]: https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#data-theme +[multiple-languages]: https://github.com/giscus/giscus/blob/main/CONTRIBUTING.md#adding-localizations +[self-hosting]: https://github.com/giscus/giscus/blob/main/SELF-HOSTING.md +[search-api]: https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions#search +[giscus-app]: https://github.com/apps/giscus +[authorization]: https://docs.github.com/en/developers/apps/identifying-and-authorizing-users-for-github-apps + +<!-- configuration --> + +Jika Anda menggunakan giscus, pertimbangkan untuk [menambahkan bintang 🌟 giscus di GitHub][repo] dan menambahkan topic [`giscus`][giscus-topic] pada [repositori Anda][topic-howto]! 🎉 + +## penggunaan lanjutan + +Anda dapat menambahkan konfigurasi tambahan (contoh: hanya mengizinkan situs tertentu) dengan mengikuti [panduan penggunaan lanjutan][advanced-usage]. + +Untuk menggunakan giscus dengan React, Vue, atau Svelte, cek [pustaka komponen giscus][giscus-component]. + +## migrasi + +Apabila Anda sebelumnya menggunakan sistem lain yang menggunakan GitHub Issues (misal: [utterances][utterances], [gitalk][gitalk]), Anda dapat [mengkonversi isu yang sudah ada menjadi diskusi][convert]. Setelah proses konversi, pastikan bahwa pemetaan antara judul diskusi dengan halaman-halamannya sudah benar, dan giscus akan otomatis menggunakan diskusinya. + +## situs yang menggunakan giscus + +- [laymonage.com][laymonage-website] +- [os.phil-opp.com][os-phil-opp] +- [Stats and R][statsandr] +- [Tech Debt Burndown Podcast][techdebtburndown] +- [**dan masih banyak yang lainnya!**][giscus-topic] + +## berkontribusi + +Lihat [CONTRIBUTING.md][contributing] + +[giscus-component]: https://github.com/giscus/giscus-component +[repo]: https://github.com/giscus/giscus +[giscus-topic]: https://github.com/topics/giscus +[topic-howto]: https://docs.github.com/en/github/administering-a-repository/classifying-your-repository-with-topics +[advanced-usage]: https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md +[utterances]: https://github.com/utterance/utterances +[gitalk]: https://github.com/gitalk/gitalk +[convert]: https://docs.github.com/en/discussions/managing-discussions-for-your-community/moderating-discussions#converting-an-issue-to-a-discussion +[laymonage-website]: https://laymonage.com/posts/giscus +[os-phil-opp]: https://os.phil-opp.com +[statsandr]: https://statsandr.com +[techdebtburndown]: https://techdebtburndown.com +[contributing]: https://github.com/giscus/giscus/blob/main/CONTRIBUTING.md + +<!-- end --> + +--- + +README ini tersedia dalam bahasa: + +[Inggris](README.md) • [Indonesia](README.id.md) • [Polandia](README.pl.md) • [Rumania](README.ro.md) + +[![Powered by Vercel](public/powered-by-vercel.svg)][vercel] + +[vercel]: https://vercel.com/?utm_source=giscus&utm_campaign=oss diff --git a/README.md b/README.md index dbbfdaa7b..428b31465 100644 --- a/README.md +++ b/README.md @@ -76,9 +76,9 @@ See [CONTRIBUTING.md][contributing] --- -This README is also available in: +This README is available in: -[English](README.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) +[English](README.md) • [Indonesian](README.id.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) [![Powered by Vercel](public/powered-by-vercel.svg)][vercel] diff --git a/README.pl.md b/README.pl.md index f58a06c4e..1c5a65dbe 100644 --- a/README.pl.md +++ b/README.pl.md @@ -76,9 +76,9 @@ See [CONTRIBUTING.md][contributing] --- -This README is also available in: +This README is available in: -[English](README.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) +[English](README.md) • [Indonesian](README.id.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) [![Powered by Vercel](public/powered-by-vercel.svg)][vercel] diff --git a/README.ro.md b/README.ro.md index 6a3c8dbbd..fa00bea59 100644 --- a/README.ro.md +++ b/README.ro.md @@ -76,9 +76,9 @@ See [CONTRIBUTING.md][contributing] --- -This README is also available in: +This README is available in: -[English](README.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) +[English](README.md) • [Indonesian](README.id.md) • [Polish](README.pl.md) • [Romanian](README.ro.md) [![Powered by Vercel](public/powered-by-vercel.svg)][vercel] diff --git a/i18n.json b/i18n.json index c9b15172d..db2a29a1a 100644 --- a/i18n.json +++ b/i18n.json @@ -1,5 +1,5 @@ { - "locales": ["en", "pl", "ro"], + "locales": ["en", "id", "pl", "ro"], "defaultLocale": "en", "pages": { "*": ["common"], diff --git a/lib/i18n.tsx b/lib/i18n.tsx index 8b534ed09..2d4db43b1 100644 --- a/lib/i18n.tsx +++ b/lib/i18n.tsx @@ -41,7 +41,7 @@ export interface GiscusTranslate<I18Namespace = I18n> { (i18nKey: I18nKeysNoCount<I18Namespace>, query?: TranslationQuery): string; } -export const availableLanguages = ['en', 'pl', 'ro'] as const; +export const availableLanguages = ['en', 'id', 'pl', 'ro'] as const; export type AvailableLanguage = typeof availableLanguages[number]; @@ -100,6 +100,7 @@ const dateFormat: Intl.DateTimeFormatOptions = { const dateFormatters: Record<AvailableLanguage, Intl.DateTimeFormat> = { en: new Intl.DateTimeFormat('en', dateFormat), + id: new Intl.DateTimeFormat('id', dateFormat), pl: new Intl.DateTimeFormat('pl', dateFormat), ro: new Intl.DateTimeFormat('ro', dateFormat), }; @@ -111,6 +112,7 @@ const shortDateFormat: Intl.DateTimeFormatOptions = { const shortDateFormatters: Record<AvailableLanguage, Intl.DateTimeFormat> = { en: new Intl.DateTimeFormat('en', shortDateFormat), + id: new Intl.DateTimeFormat('id', shortDateFormat), pl: new Intl.DateTimeFormat('pl', shortDateFormat), ro: new Intl.DateTimeFormat('ro', shortDateFormat), }; @@ -123,6 +125,7 @@ const shortDateYearFormat: Intl.DateTimeFormatOptions = { const shortDateYearFormatters: Record<AvailableLanguage, Intl.DateTimeFormat> = { en: new Intl.DateTimeFormat('en', shortDateYearFormat), + id: new Intl.DateTimeFormat('id', shortDateYearFormat), pl: new Intl.DateTimeFormat('pl', shortDateYearFormat), ro: new Intl.DateTimeFormat('ro', shortDateYearFormat), }; @@ -135,6 +138,7 @@ const relativeTimeFormat: Intl.RelativeTimeFormatOptions = { const relativeTimeFormatters: Record<AvailableLanguage, Intl.RelativeTimeFormat> = { en: new Intl.RelativeTimeFormat('en', relativeTimeFormat), + id: new Intl.RelativeTimeFormat('id', relativeTimeFormat), pl: new Intl.RelativeTimeFormat('pl', relativeTimeFormat), ro: new Intl.RelativeTimeFormat('ro', relativeTimeFormat), }; diff --git a/locales/en/config.json b/locales/en/config.json index c512e7d75..730a546f2 100644 --- a/locales/en/config.json +++ b/locales/en/config.json @@ -5,6 +5,7 @@ "chooseLanguageGiscusDisplayed": "Choose the language giscus will be displayed in. Can't find your language? <a>Contribute</a> a localization.", "lang=en": "English", + "lang=id": "Indonesian", "lang=pl": "Polish", "lang=ro": "Romanian", diff --git a/locales/id/common.json b/locales/id/common.json new file mode 100644 index 000000000..34e957978 --- /dev/null +++ b/locales/id/common.json @@ -0,0 +1,76 @@ +{ + "reactions": { + "other": "{{count}} reaksi" + }, + "comment": "Komentar", + "comments": { + "other": "{{count}} komentar" + }, + "reply": "Balas", + "replies": { + "other": "{{count}}{{plus}} balasan" + }, + "upvotes": { + "other": "{{count}} suara positif" + }, + "hiddenItems": { + "other": "{{count}} komentar belum dimuat" + }, + "genericError": "Suatu galat terjadi{{message}}", + "loadMore": "Muat lebih banyak", + "loading": "Memuat", + "loadingComments": "Memuat komentar…", + "loadingPreview": "Memuat pratinjau…", + "poweredBy": "– diberdayakan oleh <a>giscus</a>", + "showPreviousReplies": { + "other": "Tampilkan {{count}} balasan sebelumnya" + }, + "seePreviousRepliesOnGitHub": { + "other": "Lihat {{count}} balasan sebelumnya di GitHub" + }, + "edited": "diedit", + "thisCommentWasDeleted": "Komentar ini telah dihapus.", + "thisCommentWasMinimized": "Komentar ini telah ditutup.", + "thisCommentWasHidden": "Komentar ini telah disembunyikan.", + "write": "Tulis", + "preview": "Pratinjau", + "lastEditedAt": "Terakhir diedit pada {{date}}", + "writeAComment": "Tulis komentar", + "signInToComment": "Masuk untuk berkomentar", + "stylingWithMarkdownIsSupported": "Gaya tulisan bisa diubah dengan Markdown", + "cancel": "Batal", + "signInWithGitHub": "Masuk dengan GitHub", + "writeAReply": "Tulis balasan", + + "upvote": "Beri suara positif", + "addReactions": "Tambahkan reaksi", + "pleaseWait": "Mohon tunggu…", + "pickYourReaction": "Pilih reaksi Anda", + "addTheReaction": "Tambahkan reaksi {{reaction}}", + "signInToAddYourReaction": "<a>Masuk</a> untuk menambahkan reaksi Anda.", + "youMustBeSignedInToAddReactions": "Anda harus masuk untuk menambahkan reaksi.", + "peopleReactedWith": { + "other": "{{count}} orang bereaksi dengan {{emoji}} {{reaction}}" + }, + "emoji": "emoji", + "nothingToPreview": "Tidak ada pratinjau", + + "THUMBS_UP": "+1", + "THUMBS_DOWN": "-1", + "LAUGH": "Tertawa", + "HOORAY": "Hore", + "CONFUSED": "Bingung", + "HEART": "Suka", + "ROCKET": "Roket", + "EYES": "Mata", + + "COLLABORATOR": "Kolaborator", + "CONTRIBUTOR": "Kontributor", + "FIRST_TIMER": "Pemula", + "FIRST_TIME_CONTRIBUTOR": "Kontributor pemula", + "MANNEQUIN": "Manekin", + "MEMBER": "Anggota", + "NONE": "Tidak ada", + "OWNER": "Pemilik", + "APP": "Aplikasi" +} diff --git a/locales/id/config.json b/locales/id/config.json new file mode 100644 index 000000000..fc2ee55d2 --- /dev/null +++ b/locales/id/config.json @@ -0,0 +1,87 @@ +{ + "configuration": "konfigurasi", + + "language": "Bahasa", + "chooseLanguageGiscusDisplayed": "Pilih bahasa yang akan ditampilkan giscus. Tidak dapat menemukan bahasa Anda? <a>Buat kontribusi</a> terjemahan.", + + "lang=en": "Inggris", + "lang=id": "Indonesia", + "lang=pl": "Polandia", + "lang=ro": "Rumania", + + "repository": "Repositori", + "chooseTheRepository": "Pilih repositori yang akan dihubungkan dengan giscus. Pastikan:", + "theRepositoryIsPublic": "<strong>Repositori tersebut <a>publik</a></strong>, jika tidak maka pengunjung tidak dapat melihat diskusi.", + "theGiscusAppIsInstalled": "<strong>Aplikasi <a>giscus</a> terpasang di repositori tersebut</strong>, jika tidak maka pengunjung tidak dapat meninggalkan komentar dan reaksi.", + "theDiscussionsFeatureIsTurnedOn": "<strong>Fitur Discussions diaktifkan</strong> dengan <a>mengaktifkannya pada repositori tersebut</a>.", + "repositoryLabel": "repositori:", + "myusername/myrepo": "namasaya/reposaya", + "cannotUseGiscusOnThisRepository": "Tidak dapat menggunakan giscus di repositori ini. Pastikan seluruh kriteria di atas telah terpenuhi.", + "successRepositoryMeetsCriteria": "Sukses! Repositori ini memenuhi seluruh kriteria di atas.", + "aPublicGitHubRepository": "Suatu repositori yang <strong>publik</strong>. Di repositori inilah diskusinya akan dihubungkan.", + + "pageDiscussionsMapping": "Pemetaan Halaman ↔️ Diskusi", + "chooseTheMapping": "Pilih pemetaan antara halaman penyemat dan diskusi yang disematkan.", + "titleContainsPathname": "Judul diskusi mengandung <code>pathname</code> halaman", + "titleContainsPathnameDesc": "giscus akan mencari diskusi yang judulnya mengandung komponen URL <code>pathname</code> dari halaman penyemat.", + "titleContainsURL": "Judul diskusi mengandung <code>URL</code> halaman", + "titleContainsURLDesc": "giscus akan mencari diskusi yang judulnya mengandung URL dari halaman penyemat.", + "titleContainsTitle": "Judul diskusi mengandung <code><title></code> halaman", + "titleContainsTitleDesc": "giscus akan mencari diskusi yang judulnya mengandung tag HTML <code><title></code> dari halaman penyemat.", + "titleContainsOgTitle": "Judul diskusi mengandung <code>og:title</code> halaman", + "titleContainsOgTitleDesc": "giscus akan mencari diskusi yang judulnya mengandung tag HTML <aOgTitle><code><meta property=\"og:title\"></code></aOgTitle> dari halaman penyemat.", + "titleContainsSpecificTerm": "Judul diskusi mengandung istilah spesifik", + "titleContainsSpecificTermDesc": "giscus akan mencari diskusi yang judulnya mengandung suatu istilah spesifik.", + "enterTermHere": "Masukkan istilah di sini", + "specificDiscussionNumber": "Nomor diskusi spesifik", + "specificDiscussionNumberDesc": "giscus akan memuat suatu diskusi spesifik berdasarkan nomornya. Opsi ini <strong>tidak</strong> mendukung pembuatan diskusi otomatis.", + "enterDiscussionNumberHere": "Masukkan nomor diskusi di sini", + + "discussionCategory": "Kategori Diskusi", + "chooseTheDiscussionCategory": "Pilih kategori diskusi di mana diskusi baru akan dibuat.", + "categoryIsNotSupported": "Fitur ini tidak didukung apabila Anda menggunakan pemetaan <strong>nomor diskusi spesifik</strong>.", + "recommendAnnouncementsCategory": "Disarankan untuk menggunakan kategori dengan tipe <strong>Announcements</strong> agar diskusi baru hanya dapat dibuat oleh pengurus dan giscus.", + "discussionCategoryLabel": "Kategori diskusi", + "categoryNotSupportedOption": "Tidak didukung", + "pickACategoryOption": "Pilih kategori", + "noCategoriesFoundOption": "Tidak ada kategori yang ditemukan", + "onlySearchInThisCategory": "Hanya cari diskusi dalam kategori ini", + "whenSearchingOnlyThisCategory": "Ketika mencari diskusi yang cocok, giscus hanya mencari dalam kategori ini.", + + "features": "Fitur", + "chooseSpecificFeatures": "Pilih apakah fitur-fitur tertentu ingin diaktifkan.", + "enableReactionsMainPost": "Aktifkan reaksi untuk kiriman utama", + "reactionsMainPostShownBeforeComments": "Reaksi untuk kiriman utama diskusinya akan ditampilkan di atas komentar.", + "emitDiscussionMetadata": "Pancarkan metadata diskusi", + "discussionMetadataSentPeriodically": "Metadata diskusi akan dikirimkan secara berkala ke jendela induk (halaman yang menyematkan diskusi). Untuk demonstrasi, aktifkan opsi ini dan buka konsol peramban Anda pada halaman ini. Baca <a>dokumentasinya</a> untuk detail lebih lanjut.", + + "theme": "Tema", + "chooseAThemeThatMatches": "Pilih tema yang cocok dengan situs web Anda. Tidak ada yang cocok? <a>Buat kontribusi</a> tema baru.", + "URLToThemeCSS": "URL menuju berkas CSS tema:", + "warningExternalCSSUnsafe": "Perhatian: memuat CSS eksternal mungkin tidak aman. Pastikan Anda memercayai pembuat dan penyedia berkas CSS ini.", + + "theme=light": "GitHub Terang", + "theme=dark": "GitHub Gelap", + "theme=dark_dimmed": "GitHub Gelap Redup", + "theme=dark_high_contrast": "GitHub Gelap Kontras Tinggi", + "theme=dark_protanopia": "GitHub Gelap Buta Warna", + "theme=light_protanopia": "GitHub Terang Buta Warna", + "theme=transparent_dark": "Gelap Transparan", + "theme=preferred_color_scheme": "Skema warna pilihan", + "theme=custom": "Buat sendiri (eksperimental)", + + "enableGiscus": "Aktifkan giscus", + "addTheFollowingScriptTag": "Tambahkan tag <code><script></code> berikut ke template halaman web Anda di mana Anda ingin komentarnya muncul. Apabila sudah terdapat elemen dengan kelas <code>giscus</code>, maka komentarnya akan diletakkan di sana.", + "copy": "Salin", + + "[enterRepoHere]": "[MASUKKAN REPOSITORI DI SINI]", + "[enterRepoIDHere]": "[MASUKKAN ID REPOSITORI DI SINI]", + "[enterCategoryHere]": "[MASUKKAN NAMA KATEGORI DI SINI]", + "[enterCategoryIDHere]": "[MASUKKAN ID KATEGORI DI SINI]", + "[enterTermHere]": "[MASUKKAN ISTILAH DI SINI]", + "[enterNumberHere]": "[MASUKKAN NOMOR DI SINI]", + "[enterThemeCSSURLHere]": "[MASUKKAN URL CSS TEMA DI SINI]", + + "youCanCustomizeTheLayout": "Anda dapat mengubah tata letak wadahnya menggunakan pemilih kelas <code>.giscus</code> dan <code>.giscus-frame</code> dari halaman penyemat.", + "tryItOut": "silakan dicoba" +} diff --git a/locales/pl/config.json b/locales/pl/config.json index c512e7d75..96315bfd8 100644 --- a/locales/pl/config.json +++ b/locales/pl/config.json @@ -5,6 +5,7 @@ "chooseLanguageGiscusDisplayed": "Choose the language giscus will be displayed in. Can't find your language? <a>Contribute</a> a localization.", "lang=en": "English", + "lang=id": "Indonesia", "lang=pl": "Polish", "lang=ro": "Romanian", diff --git a/locales/ro/config.json b/locales/ro/config.json index c512e7d75..96315bfd8 100644 --- a/locales/ro/config.json +++ b/locales/ro/config.json @@ -5,6 +5,7 @@ "chooseLanguageGiscusDisplayed": "Choose the language giscus will be displayed in. Can't find your language? <a>Contribute</a> a localization.", "lang=en": "English", + "lang=id": "Indonesia", "lang=pl": "Polish", "lang=ro": "Romanian",