Skip to content

docs(i18n-id): Provide Indonesian translation for guide/migration -- Part 4 #63

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Nov 25, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions src/guide/migration/emits-option.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,45 +47,45 @@ Mirip dengan properti, kejadian yang dapat diteruskan oleh komponen dapat didefi
</script>
```

Opsi tersebut juga menerima sebuah objek, yang memperbolehkan pengembang untuk menetapkan pemeriksa untuk argumen yang diberikan pada kejadian yang diteruskan, mirip dengan pemeriksa pada definisi `props`.
Opsi tersebut juga menerima sebuah objek, yang memperbolehkan pengembang untuk menetapkan pemeriksa untuk argumen yang diberikan pada _event_ yang diteruskan, mirip dengan pemeriksa pada definisi `props`.

Untuk informasi lebih lanjut mengenai hal ini, silahkan baca [dokumentasi API untuk fitur ini](../../api/options-data.md#emits).

## Strategi Migrasi

Sangat disarankan bagi Anda untuk mendokumentasikan seluruh kejadian yang diteruskan oleh setiap komponen yang Anda buat menggunakan `emits`.
Sangat disarankan bagi Anda untuk mendokumentasikan seluruh _event_ yang diteruskan oleh setiap komponen yang Anda buat menggunakan `emits`.

Hal tersebut menjadi sangat penting karena [penghapusan pengubah .native](./v-on-native-modifier-removed.md). Setiap _listener_ untuk kejadian yang tidak dideklarasikan menggunakan `emits` akan diikutsertakan pada `$attrs` milik komponen, yang secara umum akan terikat pada _node_ inti dari komponen.
Hal tersebut menjadi sangat penting karena [penghapusan pengubah .native](./v-on-native-modifier-removed.md). Setiap _listener_ untuk _event_ yang tidak dideklarasikan menggunakan `emits` akan diikutsertakan pada `$attrs` milik komponen, yang secara umum akan terikat pada _node_ inti dari komponen.

### Contoh

Untuk komponen-komponen yang meneruskan ulang kejadian bawaan pada komponen induk, perubahan tersebut akan menyebabkan adanya dua kejadian yang terjadi sekaligus:
Untuk komponen-komponen yang meneruskan ulang _event_ bawaan pada komponen induk, perubahan tersebut akan menyebabkan adanya dua _event_ yang terjadi sekaligus:

```vue
<template>
<button v-on:click="$emit('click', $event)">OK</button>
</template>
<script>
export default {
emits: [] // tanpa deklarasi kejadian
emits: [] // tanpa deklarasi event
}
</script>
```

Ketika sebuah komponen induk mendengar kejadian `click` pada komponen:
Ketika sebuah komponen induk mendengar _event_ `click` pada komponen:

```html
<tombol-ku v-on:click="tanganiKlik"></tombol-ku>
```

Kejadian tersebut akan terjadi sebanyak dua kali:
_Event_ tersebut akan terjadi sebanyak dua kali:
- Sekali dari `$emit()`
- Sekali dari _listener_ kejadian bawaan yang ada pada elemen inti.
- Sekali dari _event listener_ bawaan yang ada pada elemen inti.

Disini Anda memiliki dua pilihan:

1. Mendeklarasikan kejadian `click` dengan jelas. Pilihan ini akan membantu jika Anda menambahkan beberapa logika pada responden kejadian di `<tombol-ku>`.
2. Hapus penerusan ulang kejadian, karena sekarang elemen induk dapat mendengarkan kejadian bawaan dengan mudah, tanpa menambahkan `.native`. Cocok digunakan bila Anda hanya akan meneruskan ulang kejadian tersebut.
1. Mendeklarasikan _event_ `click` dengan jelas. Pilihan ini akan membantu jika Anda menambahkan beberapa logika pada responden _event_ di `<tombol-ku>`.
2. Hapus penerusan ulang _event_, karena sekarang elemen induk dapat mendengarkan _event_ bawaan dengan mudah, tanpa menambahkan `.native`. Cocok digunakan bila Anda hanya akan meneruskan ulang _event_ tersebut.

## Lihat Juga

Expand Down
36 changes: 18 additions & 18 deletions src/guide/migration/events-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ badges:
- breaking
---

# Events API <MigrationBadges :badges="$frontmatter.badges" />
# API Events <MigrationBadges :badges="$frontmatter.badges" />

## Overview
## Gambaran Umum

`$on`, `$off` and `$once` instance methods are removed. Application instances no longer implement the event emitter interface.
_Method_ `$on`, `$off` dan `$once` dihapus. Objek aplikasi tidak perlu lagi untuk mengimplementasikan antarmuka _event emitter_.

## 2.x Syntax
## Sintaks Vue versi 2.x

In 2.x, Vue instance could be used to trigger handlers attached imperatively via the event emitter API (`$on`, `$off` and `$once`). This was used to create _event hubs_ to create global event listeners used across the whole application:
Pada Vue versi 2.x, objek Vue dapat digunakan untuk memicu _event handler_ yang dipasang secara imperatif melalui API _event emitter_ (`$on`, `$off`, dan `$once`). Hal tersebut dapat digunakan untuk membuat _event hub_ yang dapat membuat _event handler_ global yang dapat digunakan diseluruh bagian pada aplikasi:

```js
// eventHub.js
Expand All @@ -22,42 +22,42 @@ export default eventHub
```

```js
// ChildComponent.vue
// KomponenAnak.vue
import eventHub from './eventHub'

export default {
mounted() {
// adding eventHub listener
eventHub.$on('custom-event', () => {
console.log('Custom event triggered!')
// menambahkan _handler_ eventHub
eventHub.$on('event-kustom', () => {
console.log('Event kustom terjadi!')
})
},
beforeDestroy() {
// removing eventHub listener
eventHub.$off('custom-event')
// menghapus _handler_ kejadianKustom
eventHub.$off('event-kustom')
}
}
```

```js
// ParentComponent.vue
// KomponenInduk.vue
import eventHub from './eventHub'

export default {
methods: {
callGlobalCustomEvent() {
eventHub.$emit('custom-event') // if ChildComponent is mounted, we will have a message in the console
eventHub.$emit('event-kustom') // jika KomponenAnak telah masuk ke dalam DOM, Anda dapat mlihat sebuah pesan pada console.
}
}
}
```

## 3.x Update
## Pembaruan Vue versi 3.x

We removed `$on`, `$off` and `$once` methods from the instance completely. `$emit` is still a part of the existing API as it's used to trigger event handlers declaratively attached by a parent component
Kami menghapus _method_ `$on`, `$off` dan `$once` dari objek Vue sepenuhnya. `$emit` tidak dihapus dan tetap merupakan bagian dari API karena `$emit` digunakan untuk memicu _event handler_ yang dipasang secara deklaratif pada sebuah komponen induk.

## Migration Strategy
## Strategi Migrase

Existing event hubs can be replaced by using an external library implementing the event emitter interface, for example [mitt](https://github.com/developit/mitt) or [tiny-emitter](https://github.com/scottcorgan/tiny-emitter).
Anda dapat mengganti _event hub_ yang sudah ada menggunakan sebuah pustaka eksternal yang mengimplementasikan antarmuka _event emitter_, seperti [mitt](https://github.com/developit/mitt) atau [tiny-emitter](https://github.com/scottcorgan/tiny-emitter).

These methods can also be supported in compatibility builds.
Cara-cara di atas juga dapat dilakukan pada _compatibility builds_.
63 changes: 32 additions & 31 deletions src/guide/migration/filters.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,100 +3,101 @@ badges:
- removed
---

# Filters <MigrationBadges :badges="$frontmatter.badges" />
# Filter <MigrationBadges :badges="$frontmatter.badges" />

## Overview
## Gambaran Umum

Filters are removed from Vue 3.0 and no longer supported.
Fitur _filter_ dihapus dari Vue versi 3.0 dan tidak didukung lagi.

## 2.x Syntax
## Sintaks Vue versi 2.x

In 2.x, developers could use filters in order to apply common text formatting.
Pada Vue versi 2.x, pengembang dapat menggunakan _filter_ untuk menampilkan teks dalam bentuk tertentu.

For example:
Sebagai contoh:

```html
<template>
<h1>Bank Account Balance</h1>
<p>{{ accountBalance | currencyUSD }}</p>
<h1>Saldo Akun Bank</h1>
<p>{{ saldoAkun | mataUangIDR }}</p>
</template>

<script>
export default {
props: {
accountBalance: {
saldoAkun: {
type: Number,
required: true
}
},
filters: {
currencyUSD(value) {
return '$' + value
mataUangIDR(value) {
return 'IDR ' + value
}
}
}
</script>
```

While this seems like a convenience, it requires a custom syntax that breaks the assumption of expressions inside of curly braces being "just JavaScript," which has both learning and implementation costs.
Walaupun terlihat praktis, namun _filter_ membutuhkan sebuah sintaks khusus yang bertentangan dengan asumsi bahwa seluruh ekspresi yang terdapat dalam kurung kurawal merupakan JavaScript murni, dimana hal tersebut akan membutuhkan biaya belajar dan implementasi.

## 3.x Update
## Pembaruan Vue versi 3.x

In 3.x, filters are removed and no longer supported. Instead, we recommend replacing them with method calls or computed properties.
Pada Vue versi 3.x, _filter_ dihapus dan tidak didukung lagi. Sebaliknya, kami menyarankan Anda untuk mengganti _filter_ dengan pemanggilan _method_ atau properti _computed_.

Using the example above, here is one example of how it could be implemented.
Berdasarkan contoh di atas, berikut merupakan sebuah contoh bagaimana cara tersebut dapat diimplementasikan.

```html
<template>
<h1>Bank Account Balance</h1>
<p>{{ accountInUSD }}</p>
<h1>Saldo Akun Bank</h1>
<p>{{ saldoDalamIDR }}</p>
</template>

<script>
export default {
props: {
accountBalance: {
saldoAkun: {
type: Number,
required: true
}
},
computed: {
accountInUSD() {
return '$' + this.accountBalance
saldoDalamIDR() {
return 'IDR ' + this.saldoAkun
}
}
}
</script>
```

## Migration Strategy
## Strategi Migrasi

Instead of using filters, we recommend replacing them with computed properties or methods.
Dibandingkan menggunakan _filter_, kami menyarankan Anda untuk mengganti _filter_ dengan properti _computed_ atau _method_.

### Global Filters
### Filter Global

If you are using filters that were globally registered and then used throughout your app, it's likely not convenient to replace them with computed properties or methods in each individual component.
Apabila Anda menggunakan _filter_ yang didaftarkan secara global dan menggunakan _filter_ tersebut pada aplikasi Anda, tentunya mengganti _filter_ tersebut dengan properti _computed_ atau _method_ pada setiap komponen merupakan hal yang tidak praktis.

Instead, you can make your global filters available to all components through [globalProperties](../../api/application-config.html#globalproperties):
Sebaliknya, Anda dapat membuat _filter_ global Anda dapat diakses oleh seluruh komponen menggunakan[globalProperties](../../api/application-config.html#globalproperties):

```javascript
// main.js
const app = createApp(App)

app.config.globalProperties.$filters = {
currencyUSD(value) {
return '$' + value
mataUangIDR(value) {
return 'IDR ' + value
}
}
```

Then you can fix all templates using this `$filters` object like this:
Kemudian Anda dapat mengganti setiap _template_ menggunakan objek `$filters` tersebut seperti berikut:

```html
<template>
<h1>Bank Account Balance</h1>
<p>{{ $filters.currencyUSD(accountBalance) }}</p>
<h1>Saldo Akun Bank</h1>
<p>{{ $filters.mataUangIDR(saldoAkun) }}</p>
</template>
```

Note that with this approach, you can only use methods, not computed properties, as the latter only make sense when defined in the context of an individual component.
Perlu diingat bahwa dengan menggunakan pendekatan ini, Anda tidak dapat menggunakan properti _computed_.
Anda hanya dapat menggunakan _method_, karena penggunaan _method_ merupakan hal yang masuk akal bila dilihat dalam konteks komponen secara individu.
14 changes: 7 additions & 7 deletions src/guide/migration/fragments.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ badges:

# Fragments <MigrationBadges :badges="$frontmatter.badges" />

## Overview
## Gambaran Umum

In Vue 3, components now have official support for multi-root node components, i.e., fragments!
Pada Vue versi 3, komponen memiliki dukungan resmi terhadap komponen _multi-root node_, atau dikenal sebagai _fragments_

## 2.x Syntax
## Sintaks Vue versi 2.x

In 2.x, multi-root components were not supported and would emit a warning when a user accidentally created one. As a result, many components are wrapped in a single `<div>` in order to fix this error.
Pada Vue versi 2.x, komponen _multi-root_ tidak didukung dan akan mengeluarkan sebuah peringatan ketika pengguna secara tidak sengaja membuat komponen tersebut. Untuk mengatasi masalah tersebut, banyak komponen yang dibungkus pada sebuah `<div>`.

```html
<!-- Layout.vue -->
Expand All @@ -24,9 +24,9 @@ In 2.x, multi-root components were not supported and would emit a warning when a
</template>
```

## 3.x Syntax
## Sintaks Vue versi 3.x

In 3.x, components now can have multiple root nodes! However, this does require developers to explicitly define where attributes should be distributed.
Pada Vue versi 3.x, komponen dapat memiliki banyak _root node_. Namun, hal tersebut menuntut pengembang untuk menyatakan secara eksplisit di mana atribut harus didistribusikan.

```html
<!-- Layout.vue -->
Expand All @@ -37,4 +37,4 @@ In 3.x, components now can have multiple root nodes! However, this does require
</template>
```

For more information on how attribute inheritance works, see [Non-Prop Attributes](/guide/component-attrs.html).
Untuk informasi lebih lanjut mengenai cara kerja pewarisan atribut, silahkan Anda membaca [Atribut Bukan Properti](/guide/component-attrs.html).