From 81ea5c880b329d5ca0902b721d24b081d20aa850 Mon Sep 17 00:00:00 2001 From: codehag Date: Fri, 28 May 2021 13:34:43 +0200 Subject: [PATCH] make translation less of a pain --- _data/de/proposals.yml | 16 ++ _data/de/site.yml | 12 -- _data/de/stage3.yml | 270 +++--------------------- _data/en/proposals.yml | 16 ++ _data/en/site.yml | 12 -- _data/en/stage3.yml | 258 ++--------------------- _data/ja/proposals.yml | 18 ++ _data/ja/site.yml | 12 -- _data/ja/stage3.yml | 259 ++--------------------- _data/languages.yml | 10 + _data/ru/proposals.yml | 16 ++ _data/ru/site.yml | 12 -- _data/ru/stage3.yml | 271 +++--------------------- _data/stage3.yml | 397 ------------------------------------ _data/stage3_base.yml | 268 ++++++++++++++++++++++++ _data/zh-Hans/proposals.yml | 16 ++ _data/zh-Hans/stage3.yml | 275 +++---------------------- _includes/proposals.html | 26 ++- _layouts/menu.html | 16 +- _sass/_featurelist.scss | 16 +- _sass/_page-menu.scss | 11 +- _sass/_variables.scss | 1 + translation.md | 53 +++++ translation_de.md | 56 +++++ translation_ja.md | 56 +++++ translation_ru.md | 56 +++++ translation_zh-Hans.md | 56 +++++ 27 files changed, 806 insertions(+), 1679 deletions(-) create mode 100644 _data/languages.yml delete mode 100644 _data/stage3.yml create mode 100644 _data/stage3_base.yml create mode 100644 translation.md create mode 100644 translation_de.md create mode 100644 translation_ja.md create mode 100644 translation_ru.md create mode 100644 translation_zh-Hans.md diff --git a/_data/de/proposals.yml b/_data/de/proposals.yml index 7c3b9c89..9a414f41 100644 --- a/_data/de/proposals.yml +++ b/_data/de/proposals.yml @@ -21,3 +21,19 @@ champion: Meister*in champions: Meister*innen authors-and-champions: Autor*innen und Meister*innen see-more: Siehe Vorschläge in allen Phasen +needs_translation: Needs Translation +needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_de.md +community_translations: This page is translated by the community. If you want to contribute, read our guidelines. +months: + 1: Januar + 2: Februar + 3: März + 4: April + 5: Mai + 6: Juni + 7: Juli + 8: August + 9: September + 10: Oktober + 11: November + 12: Dezember diff --git a/_data/de/site.yml b/_data/de/site.yml index db0f4b3d..74c26602 100644 --- a/_data/de/site.yml +++ b/_data/de/site.yml @@ -19,18 +19,6 @@ navigation: read: Lesen der Spezifikation discourse: An Diskussionen teilnehmen sub-menu: Mitmachen Untermenü umschalten - language: - title: Sprache - url: "/de" - languages: - - title: English - url: "/" - - title: 简体中文 - url: "/zh-Hans" - - title: 日本語 - url: "/ja" - - title: Русский - url: "/ru" state-of-proposals: Vorschläge skip-content: Zum Inhalt springen open: Menü öffnen diff --git a/_data/de/stage3.yml b/_data/de/stage3.yml index 8ba305fc..5be2866f 100644 --- a/_data/de/stage3.yml +++ b/_data/de/stage3.yml @@ -1,256 +1,36 @@ -- title: Veraltete RegExp-Funktionen in JavaScript - id: proposal-regexp-legacy-features - presented: - - date: Mai 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false +proposal-regexp-legacy-features: + title: Veraltete RegExp-Funktionen in JavaScript description: Dies ist ein Spezifikationsentwurf für die veralteten (deprecated) RegExp-Features in JavaScript, d.h. statische Eigenschaften des Konstruktors wie RegExp.$1 sowie die RegExp.prototype.compile-Methode. - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - tests: - - 'https://github.com/tc39/test262/pull/2650' -- title: Hashbang Grammatik - id: proposal-hashbang - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - presented: - - date: November 2018 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true +proposal-hashbang: + title: Hashbang Grammatik description: Dieser Vorschlag soll der De-facto-Nutzung in einigen CLI JS-Hosts entsprechen, die Shebangs / Hashbang erlauben. Derzeit entfernen solche Hosts die Hashbang-Zeile, um gültige JS-Quelltexte zu erzeugen, bevor sie an JS-Engines übergeben werden. Dieser Vorschlag würde die Art und Weise, wie dies geschieht, vereinheitlichen und standardisieren. - authors: - - Bradley Farias - champions: - - Bradley Farias - tests: - - 'https://github.com/tc39/test262/pull/2065' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: Dezember 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true +proposal-atomics-wait-async: + title: Atomics.waitAsync description: Ein Vorschlag für eine "asynchrone atomare Wartezeit" für ECMAScript, in erster Linie zur Verwendung in Prozessen, die nicht blockieren dürfen. - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - tests: - - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: September 2020 - url: at - has_specification: true +proposal-relative-indexing-method: + title: .at() description: Ein Vorschlag zum Hinzufügen einer Methode .at() zu allen grundlegenden indizierbaren Klassen (Array, String, TypedArray). - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - tests: - - 'https://github.com/tc39/test262/pull/2812' -- title: Import Assertions - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: September 2020 - url: import-assertions - has_specification: true +proposal-import-assertions: + title: Import Assertions description: Ein Vorschlag für die Syntax zum Import von ES-Modulen mit Assertions. - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true - description: Proposal to import JSON files as modules. - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - authors: - - Jordan Harband - champions: - - Jordan Harband - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - has_specification: true - description: EcmaScript proposal to provide brand checks without exceptions. - presented: - - date: "January\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks -- id: proposal-class-static-block +proposal-json-modules: + title: JSON Modules + description: +proposal-private-fields-in-in: + title: Ergonomic Brand Checks + description: +proposal-class-static-block: title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton - description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause + description: +proposal-error-cause: title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM - description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: "March\_2021" -- id: proposal-temporal + description: +proposal-temporal: title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 -- id: proposal-accessible-object-hasownproperty + description: +proposal-accessible-object-hasownproperty: title: Accessible Object.prototype.hasOwnProperty() - authors: - - Jamie Kyle - - Tierney Cyren - champions: - - Tierney Cyren description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible. - example: >- - if (Object.hasOwn(object, "foo")) { - console.log("has property foo") - } - has_specification: true - presented: - - date: "May\_2021" -- id: proposal-resizablearraybuffer +proposal-resizablearraybuffer: title: In-Place Resizable and Growable ArrayBuffers - authors: - - Shu-yu Guo - champions: - - Shu-yu Guo - description: ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances. - example: |- - // Resizable ArrayBuffer - - let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); - assert(rab.byteLength === 1024); - assert(rab.maximumByteLength === 1024 ** 2); - assert(rab.resizable); - rab.resize(rab.byteLength * 2); - assert(rab.byteLength === 1024 * 2); - - // Transfer the first 1024 bytes. - let ab = rab.transfer(1024); - - // rab is now detached - assert(rab.byteLength === 0); - assert(rab.maximumByteLength === 0); - - // The contents are moved to ab. - assert(!ab.resizable); - assert(ab.byteLength === 1024); - has_specification: true - presented: - - date: "May\_2021" + description: diff --git a/_data/en/proposals.yml b/_data/en/proposals.yml index c621e406..74e49588 100644 --- a/_data/en/proposals.yml +++ b/_data/en/proposals.yml @@ -21,3 +21,19 @@ champion: Champion champions: Champions authors-and-champions: Authors and Champions see-more: See proposals in all stages +needs_translation: Needs Translation +needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation.md +community_translations: This page is translated by the community. If you want to contribute, read our guidelines. +months: + 1: January + 2: February + 3: March + 4: April + 5: May + 6: June + 7: July + 8: August + 9: September + 10: October + 11: November + 12: December diff --git a/_data/en/site.yml b/_data/en/site.yml index 610a7905..89109857 100644 --- a/_data/en/site.yml +++ b/_data/en/site.yml @@ -19,18 +19,6 @@ navigation: read: Reading the Spec discourse: Join the Discourse sub-menu: Toggle sub-menu for Contribute - language: - title: Language - url: "" - languages: - - title: Deutsch - url: "/de" - - title: 简体中文 - url: "/zh-Hans" - - title: 日本語 - url: "/ja" - - title: Русский - url: "/ru" state-of-proposals: State of Proposals skip-content: Skip to content open: Open Menu diff --git a/_data/en/stage3.yml b/_data/en/stage3.yml index 07ffa07c..1661cee5 100644 --- a/_data/en/stage3.yml +++ b/_data/en/stage3.yml @@ -1,256 +1,36 @@ -- title: Legacy RegExp features in JavaScript - id: proposal-regexp-legacy-features - presented: - - date: May 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false +proposal-regexp-legacy-features: + title: Legacy RegExp features in JavaScript description: This is a specification draft for the legacy (deprecated) RegExp features in JavaScript, i.e., static properties of the constructor like RegExp.$1 as well as the RegExp.prototype.compile method. - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - tests: - - 'https://github.com/tc39/test262/pull/2650' -- title: Hashbang Grammar - id: proposal-hashbang - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - presented: - - date: November 2018 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true +proposal-hashbang: + title: Hashbang Grammar description: This proposal is to match de-facto usage in some CLI JS hosts that allow for Shebangs / Hashbang. Such hosts strip the hashbang in order to generate valid JS source texts before passing to JS engines currently. This would unify and standardize how that is done. - authors: - - Bradley Farias - champions: - - Bradley Farias - tests: - - 'https://github.com/tc39/test262/pull/2065' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: December 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true +proposal-atomics-wait-async: + title: Atomics.waitAsync description: A proposal for an “asynchronous atomic wait” for ECMAScript, primarily for use in agents that are not allowed to block. - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - tests: - - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: September 2020 - url: at - has_specification: true +proposal-relative-indexing-method: + title: .at() description: A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray). - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - tests: - - 'https://github.com/tc39/test262/pull/2812' -- title: Import Assertions - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: September 2020 - url: import-assertions - has_specification: true +proposal-import-assertions: + title: Import Assertions description: A proposal for syntax to import ES modules with assertions. - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true +proposal-json-modules: + title: JSON Modules description: Proposal to import JSON files as modules. - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks - has_specification: true +proposal-private-fields-in-in: + title: Ergonomic Brand Checks description: EcmaScript proposal to provide brand checks without exceptions. - authors: - - Jordan Harband - champions: - - Jordan Harband -- id: proposal-class-static-block +proposal-class-static-block: title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause +proposal-error-cause: title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: "March\_2021" -- id: proposal-temporal +proposal-temporal: title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 -- id: proposal-accessible-object-hasownproperty +proposal-accessible-object-hasownproperty: title: Accessible Object.prototype.hasOwnProperty() - authors: - - Jamie Kyle - - Tierney Cyren - champions: - - Tierney Cyren description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible. - example: >- - if (Object.hasOwn(object, "foo")) { - console.log("has property foo") - } - has_specification: true - presented: - - date: "May\_2021" -- id: proposal-resizablearraybuffer +proposal-resizablearraybuffer: title: In-Place Resizable and Growable ArrayBuffers - authors: - - Shu-yu Guo - champions: - - Shu-yu Guo description: ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances. - example: |- - // Resizable ArrayBuffer - - let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); - assert(rab.byteLength === 1024); - assert(rab.maximumByteLength === 1024 ** 2); - assert(rab.resizable); - rab.resize(rab.byteLength * 2); - assert(rab.byteLength === 1024 * 2); - - // Transfer the first 1024 bytes. - let ab = rab.transfer(1024); - - // rab is now detached - assert(rab.byteLength === 0); - assert(rab.maximumByteLength === 0); - - // The contents are moved to ab. - assert(!ab.resizable); - assert(ab.byteLength === 1024); - has_specification: true - presented: - - date: "May\_2021" diff --git a/_data/ja/proposals.yml b/_data/ja/proposals.yml index 0c1b041d..9d599d4c 100644 --- a/_data/ja/proposals.yml +++ b/_data/ja/proposals.yml @@ -21,3 +21,21 @@ champion: 支持者 champions: 支持者 authors-and-champions: 提出者、及び支持者 see-more: 全ステージのプロポーザルを見る +needs_translation: Needs Translation +needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_ja.md +community_translations: This page is translated by the community. If you want to contribute, read our guidelines. +months: + 1: 1月 + 2: 2月 + 3: 3月 + 4: 4月 + 5: 5月 + 6: 6月 + 7: 7月 + 8: 8月 + 9: 9月 + 10: 10月 + 11: 11月 + 12: 12月 + + diff --git a/_data/ja/site.yml b/_data/ja/site.yml index 7cf9d4e7..d2e6195e 100644 --- a/_data/ja/site.yml +++ b/_data/ja/site.yml @@ -19,18 +19,6 @@ navigation: read: 仕様の読み方について discourse: Discourseに参加する sub-menu: コントリビュートのサブメニューを表示する - language: - title: 言語 - url: "/ja" - languages: - - title: English - url: "/" - - title: Deutsch - url: "/de" - - title: 简体中文 - url: "/zh-Hans" - - title: Русский - url: "/ru" state-of-proposals: プロポーザルの状態 skip-content: プロポーザルの状態へ飛ぶ open: メニューを表示する diff --git a/_data/ja/stage3.yml b/_data/ja/stage3.yml index 3906800a..4bbf97ba 100644 --- a/_data/ja/stage3.yml +++ b/_data/ja/stage3.yml @@ -1,257 +1,36 @@ -- title: Legacy RegExp features in JavaScript - id: proposal-regexp-legacy-features - presented: - - date: 5月 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false +proposal-regexp-legacy-features: + title: Legacy RegExp features in JavaScript description: JavaScriptの古い(非推奨の)正規表現機能の仕様ドラフトです。例えば、RegExp.$1RegExp.prototype.compileメソッドのようなコンストラクタのスタティックプロパティなどです。 - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - tests: - - 'https://github.com/tc39/test262/pull/2650' -- title: Hashbang Grammar - id: proposal-hashbang - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - presented: - - date: 11月 2018 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true +proposal-hashbang: + title: Hashbang Grammar description: このプロポーザルは、シェバン/ハッシュバンに対応しているいくつかのCLI JSのホストでデファクトとなっている使用方法と合わせるものです。それらのホストは現在、JSエンジンにソーステキストを渡す前にそれらを有効なものにするためにハッシュバンを取り除いています。これはそれがどのように行われるかを統一、また標準化します。 - authors: - - Bradley Farias - champions: - - Bradley Farias - tests: - - 'https://github.com/tc39/test262/pull/2065' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: 12月 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true +proposal-atomics-wait-async: + title: Atomics.waitAsync description: 主にブロッキングが許されないエージェントで使用するための"Atomics.waitの非同期版"をECMAScriptに追加するためのプロポーザルです。 - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - tests: - - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: 9月 2020 - url: at - has_specification: true +proposal-relative-indexing-method: + title: .at() description: すべての基本的なインデックス可能なクラス(Array, String, TypedArray)に、.at()メソッドを追加するプロポーザルです。 - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - tests: - - 'https://github.com/tc39/test262/pull/2812' -- title: Import Assertions - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: 9月 2020 - url: import-assertions - has_specification: true +proposal-import-assertions: + title: Import Assertions description: ES Modulesをアサーション付きでインポートする構文のためのプロポーザルです。 - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: 1月 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true +proposal-json-modules: + title: JSON Modules description: JSONファイルをモジュールとしてインポートするためのプロポーザルです。 - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - presented: - - date: 1月 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks - has_specification: true +proposal-private-fields-in-in: + title: Ergonomic Brand Checks description: 例外なしにブランドチェックを実現するためのプロポーザルです。 - authors: - - Jordan Harband - champions: - - Jordan Harband - has_specification: true -- id: proposal-class-static-block +proposal-class-static-block: title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton description: Class static blockは、クラス定義の評価中に追加の静的初期化を実行する仕組みを提供します。これは、静的解析ツールに役立つ情報を提供し、デコレーターのための妥当なターゲットであるため、パブリックフィールドの置き換えを意図したものではありません。むしろ、これは既存のユースケースを補強し、このプロポーザルで現在処理されていない新しいユースケースを実現できるようにすることを目的としています。 - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: 3月 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause +proposal-error-cause: title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM description: エラーは、実行時の異常を表現するために作られます。予期しない動作の診断を容易にするためは、エラーメッセージやエラーインスタンスのプロパティなど、その時点で何が起こったかを明らかにする状況情報をエラーに追加する必要があります。エラーが内部の深いメソッドからスローされた場合、スローされたエラーは、適切な例外設計パターンなしに簡単に処理できるとは限りません。このプロポーザルは原因を伝達するための便利な手段を導入します。 - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: 3月 2021 -- id: proposal-temporal +proposal-temporal: title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel description: ECMAScriptでは、Dateが長年の悩みの種でした。そこで提案されたのがTemporalであり、これは(Mathのような)トップレベルの名前空間として振る舞い、ECMAScriptに最新のdate/time APIをもたらすグローバルオブジェクトです。動機の詳しい説明については、プロポーザルのREADMEをご覧ください。 - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: 3月 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 -- id: proposal-accessible-object-hasownproperty +proposal-accessible-object-hasownproperty: title: Accessible Object.prototype.hasOwnProperty() - authors: - - Jamie Kyle - - Tierney Cyren - champions: - - Tierney Cyren description: よりObject.prototype.hasOwnProperty()を利用しやすくするためのObject.hasOwn()のプロポーザルです。 - example: >- - if (Object.hasOwn(object, "foo")) { - console.log("has property foo") - } - has_specification: true - presented: - - date: "May\_2021" -- id: proposal-resizablearraybuffer +proposal-resizablearraybuffer: title: In-Place Resizable and Growable ArrayBuffers - authors: - - Shu-yu Guo - champions: - - Shu-yu Guo description: ArrayBufferは、バイナリデータをインメモリで処理できるようにし、大きな成功を収めました。このプロポーザルは、ArrayBufferコンストラクタを拡張することで、バッファのインプレースの拡張と縮小が可能な最大長を新たに受け取れるようにします。同様に、SharedArrayBufferは、インプレースの拡張が可能な最大長を新たに受け取れるように拡張されています。transferメソッドは、ArrayBufferをデタッチし、ゼロコピーによる移動を行い、リサイズ可能なArrayBufferインスタンスをArrayBufferインスタンスとして「固定」するための標準的な方法としてもここで再導入されています。 - example: |- - // Resizable ArrayBuffer - - let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); - assert(rab.byteLength === 1024); - assert(rab.maximumByteLength === 1024 ** 2); - assert(rab.resizable); - rab.resize(rab.byteLength * 2); - assert(rab.byteLength === 1024 * 2); - - // Transfer the first 1024 bytes. - let ab = rab.transfer(1024); - - // rab is now detached - assert(rab.byteLength === 0); - assert(rab.maximumByteLength === 0); - - // The contents are moved to ab. - assert(!ab.resizable); - assert(ab.byteLength === 1024); - has_specification: true - presented: - - date: "May\_2021" diff --git a/_data/languages.yml b/_data/languages.yml new file mode 100644 index 00000000..2d3e8568 --- /dev/null +++ b/_data/languages.yml @@ -0,0 +1,10 @@ +- title: English + id: en +- title: Sprache + id: de +- title: 简体中文 + id: zh-Hans +- title: 日本語 + id: ja +- title: Русский + id: ru diff --git a/_data/ru/proposals.yml b/_data/ru/proposals.yml index 9775a953..d96991d3 100644 --- a/_data/ru/proposals.yml +++ b/_data/ru/proposals.yml @@ -21,3 +21,19 @@ champion: Чемпион champions: Чемпионы authors-and-champions: Авторы и чемпионы see-more: Предложения на всех этапах +needs_translation: Needs Translation +needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_ru.md +community_translations: This page is translated by the community. If you want to contribute, read our guidelines. +months: + 1: январь + 2: февраль + 3: март + 4: апрель + 5: май + 6: июнь + 7: июль + 8: август + 9: сентябрь + 10: октябрь + 11: ноябрь + 12: декабрь diff --git a/_data/ru/site.yml b/_data/ru/site.yml index 29e6d5c3..4b7c5c48 100644 --- a/_data/ru/site.yml +++ b/_data/ru/site.yml @@ -19,18 +19,6 @@ navigation: read: Как читать спецификацию discourse: Присоединяйся к обсуждениям sub-menu: Открыть меню «Сделать вклад» - language: - title: Язык - url: "/ru" - languages: - - title: English - url: "/" - - title: Deutsch - url: "/de" - - title: 简体中文 - url: "/zh-Hans" - - title: Русский - url: "/ru" state-of-proposals: Статус предложений skip-content: Перейти к содержанию open: Открыть меню diff --git a/_data/ru/stage3.yml b/_data/ru/stage3.yml index fe9d472a..9293272d 100644 --- a/_data/ru/stage3.yml +++ b/_data/ru/stage3.yml @@ -1,256 +1,37 @@ -- title: Устаревшие возможности RegExp в JavaScript - id: proposal-regexp-legacy-features - presented: - - date: Май 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false +proposal-regexp-legacy-features: + title: Устаревшие возможности RegExp в JavaScript description: Черновик спецификации для устаревших возможностей RegExp в JavaScript, т.е. статических свойств конструктора вида RegExp.$1, а также метода RegExp.prototype.compile. - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - tests: - - 'https://github.com/tc39/test262/pull/2650' -- title: Грамматика Hashbang - id: proposal-hashbang - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - presented: - - date: Ноябрь 2018 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true +proposal-hashbang: + title: Грамматика Hashbang description: Это предложение по стандартизации использования Shebang / Hashbang в соответствии с тем, как они фактически уже используются в некоторых CLI-окружениях JS. В настоящее время такие окружения удаляют шебанг для того, чтобы сгенерировать валидный исходный код на JS перед тем, как отдать его на исполнение JS-движкам. Это предложение позволит унифицировать и стандартизировать такое использование. - authors: - - Bradley Farias - champions: - - Bradley Farias - tests: - - 'https://github.com/tc39/test262/pull/2065' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: Декабрь 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true +proposal-atomics-wait-async: + title: Atomics.waitAsync description: Предложение для добавления атомарной операции ожидания асинхронной операции в ECMAScript, прежде всего, для использования в агентах, в которых невозможна блокировка. - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - tests: - - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: Сентябрь 2020 - url: at - has_specification: true +proposal-relative-indexing-method: + title: .at() description: Предложение по добавлению метода .at() во все основные перечисляемые классы (Array, String, TypedArray). - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - tests: - - 'https://github.com/tc39/test262/pull/2812' -- title: Import assertions - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: Сентябрь 2020 - url: import-assertions - has_specification: true +proposal-import-assertions: + title: Import assertions description: Предложение по добавлению синтаксиса для импорта модулей ES с дополнительными параметрами. - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true - description: Proposal to import JSON files as modules. - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks - has_specification: true - description: EcmaScript proposal to provide brand checks without exceptions. - authors: - - Jordan Harband - champions: - - Jordan Harband -- id: proposal-class-static-block +proposal-json-modules: + title: JSON Modules + description: +proposal-private-fields-in-in: + title: Ergonomic Brand Checks + description: +proposal-class-static-block: title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton - description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause + description: +proposal-error-cause: title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM - description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: "March\_2021" -- id: proposal-temporal + description: +proposal-temporal: title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 -- id: proposal-accessible-object-hasownproperty + description: +proposal-accessible-object-hasownproperty: title: Accessible Object.prototype.hasOwnProperty() - authors: - - Jamie Kyle - - Tierney Cyren - champions: - - Tierney Cyren description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible. - example: >- - if (Object.hasOwn(object, "foo")) { - console.log("has property foo") - } - has_specification: true - presented: - - date: "May\_2021" -- id: proposal-resizablearraybuffer + description: +proposal-resizablearraybuffer: title: In-Place Resizable and Growable ArrayBuffers - authors: - - Shu-yu Guo - champions: - - Shu-yu Guo - description: ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances. - example: |- - // Resizable ArrayBuffer - - let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); - assert(rab.byteLength === 1024); - assert(rab.maximumByteLength === 1024 ** 2); - assert(rab.resizable); - rab.resize(rab.byteLength * 2); - assert(rab.byteLength === 1024 * 2); - - // Transfer the first 1024 bytes. - let ab = rab.transfer(1024); - - // rab is now detached - assert(rab.byteLength === 0); - assert(rab.maximumByteLength === 0); - - // The contents are moved to ab. - assert(!ab.resizable); - assert(ab.byteLength === 1024); - has_specification: true - presented: - - date: "May\_2021" + description: diff --git a/_data/stage3.yml b/_data/stage3.yml deleted file mode 100644 index 51e0e54d..00000000 --- a/_data/stage3.yml +++ /dev/null @@ -1,397 +0,0 @@ -- id: proposal-regexp-legacy-features - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - description: >- - This is a specification draft for the legacy (deprecated) RegExp features in - JavaScript, i.e., static properties of the constructor like RegExp.$1 as - well as the RegExp.prototype.compile method. - has_specification: false - presented: - - date: "May\_2017" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - title: Legacy RegExp features in JavaScript - tests: - - 'https://github.com/tc39/test262/pull/2650' -- id: proposal-private-methods - authors: - - Daniel Ehrenberg - champions: - - Daniel Ehrenberg - - Kevin Gibbons - description: >- - Keeping state and behavior private to a class lets library authors present a - clear, stable interface, while changing their code over time behind the - scenes. - example: |- - class Counter extends HTMLElement { - #xValue = 0; - - get #x() { return #xValue; } - set #x(value) { - this.#xValue = value; - window.requestAnimationFrame(this.#render.bind(this)); - } - - #clicked() { - this.#x++; - } - - constructor() { - super(); - this.onclick = this.#clicked.bind(this); - } - - connectedCallback() { this.#render(); } - - #render() { - this.textContent = this.#x.toString(); - } - } - window.customElements.define('num-counter', Counter); - has_specification: true - presented: - - date: "September\_2020" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features - title: Private instance methods and accessors - tests: - - >- - https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+methods -- id: proposal-class-fields - authors: - - Daniel Ehrenberg - - Kevin Gibbons - champions: - - Daniel Ehrenberg - - Jeff Morrison - - Kevin Smith - - Kevin Gibbons - description: >- - This proposes a combined vision for public fields and private fields, - drawing on the earlier Orthogonal Classes and Class Evaluation Order - proposals. - example: |- - class X { - #foo; - method() { - console.log(this.#foo) - } - } - has_specification: true - presented: - - date: "September\_2020" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features - title: Class Public Instance Fields & Private Instance Fields - tests: - - 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+fields' -- id: proposal-static-class-features - authors: - - Daniel Ehrenberg - - Kevin Gibbons - - Jeff Morrison - - Kevin Smith - champions: - - Shu-Yu Guo - - Daniel Ehrenberg - description: >- - A proposal to add three features to JavaScript classes, building on the - previous class fields and private methods proposals. - example: |- - class ColorFinder { - static #red = "#ff0000"; - static #green = "#00ff00"; - static #blue = "#0000ff"; - - static colorName(name) { - switch (name) { - case "red": return ColorFinder.#red; - case "blue": return ColorFinder.#blue; - case "green": return ColorFinder.#green; - default: throw new RangeError("unknown color"); - } - } - - // Somehow use colorName - } - has_specification: true - presented: - - date: "September\_2020" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features - title: Static class fields and private static methods - tests: - - 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+static+fields' -- id: proposal-hashbang - authors: - - Bradley Farias - champions: - - Bradley Farias - description: >- - This proposal is to match de-facto usage in some CLI JS hosts that allow for - Shebangs / Hashbang. Such hosts strip the hashbang in order to generate - valid JS source texts before passing to JS engines currently. This would - unify and standardize how that is done. - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - has_specification: true - presented: - - date: "November\_2018" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - title: Hashbang Grammar - tests: - - 'https://github.com/tc39/test262/pull/2065' -- id: proposal-top-level-await - authors: - - Myles Borins - champions: - - Myles Borins - description: >- - Top-level await enables modules to act as big async functions. - With top-level await, ECMAScript Modules (ESM) can await - resources, causing other modules who import them to wait before they start - evaluating their body. - example: |- - // file.html - <script type=module src="a.mjs"></script> - - // a.mjs - await import("./b.mjs"); - - // b.mjs - await import("./a.mjs"); - has_specification: true - presented: - - date: "June\_2019" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-06/june-6.md#top-level-await-for-stage-3 - title: Top-level await - tests: - - 'https://github.com/tc39/test262/pull/2274' -- id: proposal-regexp-match-indices - authors: - - Ron Buckton - champions: - - Ron Buckton - description: >- - ECMAScript RegExp Match Indicies provide additional information about the - start and end indices of captured substrings relative to the start of the - input string. - example: |- - const re1 = /a+(?<Z>z)?/; - - // indices are relative to start of the input string: - const s1 = "xaaaz"; - const m1 = re1.exec(s1); - m1.indices[0][0] === 1; - m1.indices[0][1] === 5; - s1.slice(...m1.indices[0]) === "aaaz"; - - m1.indices[1][0] === 4; - m1.indices[1][1] === 5; - s1.slice(...m1.indices[1]) === "z"; - - m1.indices.groups["Z"][0] === 4; - m1.indices.groups["Z"][1] === 5; - s1.slice(...m1.indices.groups["Z"]) === "z"; - - // capture groups that are not matched return `undefined`: - const m2 = re1.exec("xaaay"); - m2.indices[1] === undefined; - m2.indices.groups["Z"] === undefined; - has_specification: false - presented: - - date: "December\_2019" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-3.md#regexp-match-indices-performance-feedback - title: RegExp Match Indices - tests: - - 'https://github.com/tc39/test262/pull/2309' -- id: proposal-atomics-wait-async - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - description: >- - A proposal for an “asynchronous atomic wait” for ECMAScript, primarily for - use in agents that are not allowed to block. - has_specification: true - presented: - - date: "December\_2019" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - title: Atomics.waitAsync - tests: - - 'https://github.com/tc39/test262/issues/2511' -- id: proposal-relative-indexing-method - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - description: >- - A proposal to add a .at() method to all the basic indexable - classes (Array, String, TypedArray). - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - has_specification: true - presented: - - date: "November\_2020" - url: https://github.com/tc39/notes/blob/master/meetings/2020-11/nov-17.md#item-rename--revisit-inclusion-on-string - title: .at() - tests: - - 'https://github.com/tc39/test262/pull/2812' -- id: proposal-import-assertions - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - description: A proposal for syntax to import ES modules with assertions. - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - has_specification: true - presented: - - date: "September\_2020" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#import-assertions-for-stage-3 - title: Import Assertions -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: January\_2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true - description: Proposal to import JSON files as modules. - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - description: EcmaScript proposal to provide brand checks without exceptions. - authors: - - Jordan Harband - has_specification: true - presented: - - date: "January\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks -- id: proposal-class-static-block - title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton - description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause - title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM - description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: "March\_2021" -- id: proposal-temporal - title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 diff --git a/_data/stage3_base.yml b/_data/stage3_base.yml new file mode 100644 index 00000000..b871ed3c --- /dev/null +++ b/_data/stage3_base.yml @@ -0,0 +1,268 @@ +- title: Legacy RegExp features in JavaScript + id: proposal-regexp-legacy-features + presented: + - month: 5 + year: 2017 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 + has_specification: false + description: This is a specification draft for the legacy (deprecated) RegExp features in JavaScript, i.e., static properties of the constructor like RegExp.$1 as well as the RegExp.prototype.compile method. + authors: + - Claude Pache + champions: + - Mark Miller + - Claude Pache + tests: + - 'https://github.com/tc39/test262/pull/2650' +- title: Hashbang Grammar + id: proposal-hashbang + example: |- + #!/usr/bin/env node + // in the Module Goal + export {}; + console.log(1); + presented: + - month: 11 + year: 2018 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar + has_specification: true + description: This proposal is to match de-facto usage in some CLI JS hosts that allow for Shebangs / Hashbang. Such hosts strip the hashbang in order to generate valid JS source texts before passing to JS engines currently. This would unify and standardize how that is done. + authors: + - Bradley Farias + champions: + - Bradley Farias + tests: + - 'https://github.com/tc39/test262/pull/2065' +- title: Atomics.waitAsync + id: proposal-atomics-wait-async + presented: + - month: 12 + year: 2019 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 + has_specification: true + description: A proposal for an “asynchronous atomic wait” for ECMAScript, primarily for use in agents that are not allowed to block. + authors: + - Lars Hansen + champions: + - Shu-yu Guo + - Lars Hansen + tests: + - 'https://github.com/tc39/test262/issues/2511' +- title: .at() + id: proposal-relative-indexing-method + example: |- + var list = ["apple", "orange", "banana"]; + list.at(-1) // banana, using negative index + list.at(0) // apple + list.at(1) // orange + list.at(2) // banana + presented: + - month: 9 + year: 2020 + url: at + has_specification: true + description: A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray). + authors: + - Shu-yu Guo + - Tab Atkins + champions: + - Shu-yu Guo + - Tab Atkins + tests: + - 'https://github.com/tc39/test262/pull/2812' +- title: Import Assertions + id: proposal-import-assertions + example: >- + new Worker("foo.wasm", { type: "module", assert: { type: + "webassembly" } }); + presented: + - month: 9 + year: 2020 + url: import-assertions + has_specification: true + description: A proposal for syntax to import ES modules with assertions. + authors: + - Myles Borins + - Sven Sauleau + - Dan Clark + - Daniel Ehrenberg + champions: + - Myles Borins + - Sven Sauleau + - Dan Clark + - Daniel Ehrenberg +- title: JSON Modules + id: proposal-json-modules + example: >- + import json from "./foo.json" assert { type: "json" }; + presented: + - month: 1 + year: 2021 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 + has_specification: true + description: Proposal to import JSON files as modules. + authors: + - Sven Sauleau + - Daniel Ehrenberg + - Myles Borins + - Dan Clark + champions: + - Sven Sauleau + - Daniel Ehrenberg + - Myles Borins + - Dan Clark +- title: Ergonomic Brand Checks + id: proposal-private-fields-in-in + example: >- + class C { + #brand; + #method() {} + get #getter() {} + static isC(obj) { + return #brand in obj && #method in obj && #getter in obj; + } + } + presented: + - month: 1 + year: 2021 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks + has_specification: true + description: EcmaScript proposal to provide brand checks without exceptions. + authors: + - Jordan Harband + champions: + - Jordan Harband +- id: proposal-class-static-block + title: Class Static Block + authors: + - Ron Buckton + champions: + - Ron Buckton + description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. + example: >- + // "friend" access (same module) + let A, B; + { + let friendA; + + A = class A { + #x; + + static { + friendA = { + getX(obj) { return obj.#x }, + setX(obj, value) { obj.#x = value } + }; + } + }; + + B = class B { + constructor(a) { + const x = friendA.getX(a); // ok + friendA.setX(a, x); // ok + } + }; + } + has_specification: true + presented: + - month: 3 + year: 2021 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks +- id: proposal-error-cause + title: Error Cause + authors: + - Chengzhong Wu + champions: + - Ron Buckton + - Chengzhong Wu + - Hemanth HM + description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. + example: >- + await fetch('http://domain/upload', { method: 'POST', body: jobResult }) + .catch(err => { + throw new Error('Upload job result failed', { cause: err }); + }); + has_specification: true + presented: + - month: 3 + year: 2021 +- id: proposal-temporal + title: Temporal + authors: + - Maggie Pint + - Matt Johnson + - Philipp Dunkel + champions: + - Maggie Pint + - Matt Johnson + - Philipp Dunkel + description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. + example: >- + // See the repo for detailed examples. + // small example from the cook book + + const date = Temporal.now.plainDateISO(); // Gets the current date + + date.toString(); // returns the date in ISO 8601 date format + + // If you additionally want the time + + Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format + has_specification: true + presented: + - month: 3 + year: 2021 + url: >- + https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 +- id: proposal-accessible-object-hasownproperty + title: Accessible Object.prototype.hasOwnProperty() + authors: + - James Kyle + - Tierney Cyren + champions: + - Tierney Cyren + description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible. + example: >- + if (Object.hasOwn(object, "foo")) { + console.log("has property foo") + } + has_specification: true + presented: + - month: 5 + year: 2021 +- id: proposal-resizablearraybuffer + title: In-Place Resizable and Growable ArrayBuffers + authors: + - Shu-yu Guo + champions: + - Shu-yu Guo + description: ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances. + example: |- + // Resizable ArrayBuffer + + let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); + assert(rab.byteLength === 1024); + assert(rab.maximumByteLength === 1024 ** 2); + assert(rab.resizable); + rab.resize(rab.byteLength * 2); + assert(rab.byteLength === 1024 * 2); + + // Transfer the first 1024 bytes. + let ab = rab.transfer(1024); + + // rab is now detached + assert(rab.byteLength === 0); + assert(rab.maximumByteLength === 0); + + // The contents are moved to ab. + assert(!ab.resizable); + assert(ab.byteLength === 1024); + has_specification: true + presented: + - month: 5 + year: 2021 diff --git a/_data/zh-Hans/proposals.yml b/_data/zh-Hans/proposals.yml index 09f39073..785fb4b9 100644 --- a/_data/zh-Hans/proposals.yml +++ b/_data/zh-Hans/proposals.yml @@ -21,3 +21,19 @@ champion: 推进者 champions: 推进者 authors-and-champions: 作者和推进者 see-more: 查看各阶段的提案 +needs_translation: Needs Translation +needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_zh-Hans.md +community_translations: This page is translated by the community. If you want to contribute, read our guidelines. +months: + 1: January + 2: February + 3: March + 4: April + 5: May + 6: June + 7: July + 8: August + 9: September + 10: October + 11: November + 12: December diff --git a/_data/zh-Hans/stage3.yml b/_data/zh-Hans/stage3.yml index d34e18be..314db3bf 100644 --- a/_data/zh-Hans/stage3.yml +++ b/_data/zh-Hans/stage3.yml @@ -1,261 +1,36 @@ -- title: JavaScript 中的历史 RegExp 特性 - id: proposal-regexp-legacy-features - presented: - - date: May 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false +proposal-regexp-legacy-features: + title: JavaScript 中的历史 RegExp 特性 description: 该提案规范了 JavaScript 中已废弃的 RegExp 特性,即构造函数的静态属性以及 RegExp.prototype.compile 方法。 - authors: - - Claude Pache - champions: - - Mark Miller - - Claude Pache - tests: - - 'https://github.com/tc39/test262/pull/2650' -- title: Hashbang 语法 - id: proposal-hashbang - example: |- - #!/usr/bin/env node - // in the Module Goal - export {}; - console.log(1); - presented: - - date: November 2018 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true +proposal-hashbang: + title: Hashbang 语法 description: 该提案意在配合一些允许/需要使用 Hashbang 的 JS 环境。在这种环境中,目前它们需要先删除 hashbang 以生成有效的 JS 代码。该提案将统一和规范这种做法。 - authors: - - Bradley Farias - champions: - - Bradley Farias - tests: - - 'https://github.com/tc39/test262/pull/2065' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: December 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true +proposal-atomics-wait-async: + title: Atomics.waitAsync description: 该提案为 Atomics 添加一个异步的 wait,用于不允许阻塞线程的环境。 - authors: - - Lars Hansen - champions: - - Shu-yu Guo - - Lars Hansen - tests: - - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: September 2020 - url: at - has_specification: true +proposal-relative-indexing-method: + title: .at() description: 该提案计划在所有可索引类(ArrayStringTypedArray)中添加一个.at()方法。该方法允许负数索引。 - authors: - - Shu-yu Guo - - Tab Atkins - champions: - - Shu-yu Guo - - Tab Atkins - tests: - - 'https://github.com/tc39/test262/pull/2812' -- title: import 断言 - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: September 2020 - url: import-assertions - has_specification: true +proposal-import-assertions: + title: import 断言 description: 该提案为 `import` 语句添加了断言语法。如果模块不符合期望的断言,则导入会失败。 - authors: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg - champions: - - Myles Borins - - Sven Sauleau - - Dan Clark - - Daniel Ehrenberg -- title: JSON Modules - id: proposal-json-modules - example: >- - import json from "./foo.json" assert { type: "json" }; - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3 - has_specification: true - description: Proposal to import JSON files as modules. - authors: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark - champions: - - Sven Sauleau - - Daniel Ehrenberg - - Myles Borins - - Dan Clark -- title: Ergonomic Brand Checks - id: proposal-private-fields-in-in - example: >- - class C { - #brand; - #method() {} - get #getter() {} - static isC(obj) { - return #brand in obj && #method in obj && #getter in obj; - } - } - presented: - - date: January 2021 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks - has_specification: true - description: EcmaScript proposal to provide brand checks without exceptions. - authors: - - Jordan Harband - champions: - - Jordan Harband - has_specification: true - presented: - - date: "January\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks -- id: proposal-class-static-block +proposal-json-modules: + title: JSON Modules + description: +proposal-private-fields-in-in: + title: Ergonomic Brand Checks + description: +proposal-class-static-block: title: Class Static Block - authors: - - Ron Buckton - champions: - - Ron Buckton - description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal. - example: >- - // "friend" access (same module) - let A, B; - { - let friendA; - - A = class A { - #x; - - static { - friendA = { - getX(obj) { return obj.#x }, - setX(obj, value) { obj.#x = value } - }; - } - }; - - B = class B { - constructor(a) { - const x = friendA.getX(a); // ok - friendA.setX(a, x); // ok - } - }; - } - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks -- id: proposal-error-cause + description: +proposal-error-cause: title: Error Cause - authors: - - Chengzhong Wu - champions: - - Ron Buckton - - Chengzhong Wu - - Hemanth HM - description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause. - example: >- - await fetch('http://domain/upload', { method: 'POST', body: jobResult }) - .catch(err => { - throw new Error('Upload job result failed', { cause: err }); - }); - has_specification: true - presented: - - date: "March\_2021" -- id: proposal-temporal + description: +proposal-temporal: title: Temporal - authors: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - champions: - - Maggie Pint - - Matt Johnson - - Philipp Dunkel - description: Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme. - example: >- - // See the repo for detailed examples. - // small example from the cook book - - const date = Temporal.now.plainDateISO(); // Gets the current date - - date.toString(); // returns the date in ISO 8601 date format - - // If you additionally want the time - - Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format - has_specification: true - presented: - - date: "March\_2021" - url: >- - https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3 -- id: proposal-accessible-object-hasownproperty + description: +proposal-accessible-object-hasownproperty: title: Accessible Object.prototype.hasOwnProperty() - authors: - - Jamie Kyle - - Tierney Cyren - champions: - - Tierney Cyren description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible. - example: >- - if (Object.hasOwn(object, "foo")) { - console.log("has property foo") - } - has_specification: true - presented: - - date: "May\_2021" -- id: proposal-resizablearraybuffer +proposal-resizablearraybuffer: title: In-Place Resizable and Growable ArrayBuffers - authors: - - Shu-yu Guo - champions: - - Shu-yu Guo - description: ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances. - example: |- - // Resizable ArrayBuffer - - let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 }); - assert(rab.byteLength === 1024); - assert(rab.maximumByteLength === 1024 ** 2); - assert(rab.resizable); - rab.resize(rab.byteLength * 2); - assert(rab.byteLength === 1024 * 2); - - // Transfer the first 1024 bytes. - let ab = rab.transfer(1024); - - // rab is now detached - assert(rab.byteLength === 0); - assert(rab.maximumByteLength === 0); - - // The contents are moved to ab. - assert(!ab.resizable); - assert(ab.byteLength === 1024); - has_specification: true - presented: - - date: "May\_2021" + description: diff --git a/_includes/proposals.html b/_includes/proposals.html index e97e9ee4..eea512c6 100644 --- a/_includes/proposals.html +++ b/_includes/proposals.html @@ -9,6 +9,11 @@

{{ site.data["proposals"]["description"] }} + {% if site.active_lang != site.default_lang %} +

+ {{ site.data.proposals.community_translations }} +

+ {% endif %}
{{ site.data["proposals"]["how-to-read"]["title"] }} @@ -17,6 +22,7 @@

{{ site.data["proposals"]["how-to-read"]["description"] }}

+ {{ site.data["proposals"]["how-to-read"]["tags"]["title"] }} @@ -48,22 +54,30 @@

-{% for proposal in site.data.stage3 %} +{% for proposal in site.data.stage3_base %}

- {{ proposal.title }} + {{ site.data.stage3[proposal.id].title }}

- {% if proposal.description %} + {% if site.data.stage3[proposal.id].description %} +
{{ site.data.stage3[proposal.id].description }}
+ {% else %}
{{ proposal.description }}
{% endif %} {% if proposal.example %} diff --git a/_layouts/menu.html b/_layouts/menu.html index 6271e921..d8bd6181 100644 --- a/_layouts/menu.html +++ b/_layouts/menu.html @@ -108,12 +108,20 @@ diff --git a/_sass/_featurelist.scss b/_sass/_featurelist.scss index b06126ea..3c2c5d87 100644 --- a/_sass/_featurelist.scss +++ b/_sass/_featurelist.scss @@ -19,7 +19,7 @@ a { color: white; - margin-top: 0.5rem; + margin-top: 0.5rem; opacity: 1; padding-left: 0.5rem; padding-right: 0.5rem; @@ -40,9 +40,21 @@ border-radius: 10px; color: white; font-weight: 550; + margin-top: 0.5rem; padding-left: 0.5rem; padding-right: 0.5rem; - margin-top: 0.5rem; + } + } + /* stylelint-disable-next-line no-descending-specificity */ + &__translation a { + background-color: $tag-translation; + border: 2px solid $tag-translation; + border-radius: 10px; + &:focus { + color: $tag-translation; + } + &:hover { + color: $tag-translation; } } &__status { diff --git a/_sass/_page-menu.scss b/_sass/_page-menu.scss index 5f59fa63..0f2257f4 100644 --- a/_sass/_page-menu.scss +++ b/_sass/_page-menu.scss @@ -140,6 +140,7 @@ $trans-timing: 600ms; font-weight: $font-weight-semi-bold; text-decoration: none; } + /* stylelint-disable-next-line no-descending-specificity */ &__language { height: 40px; margin-left: auto; @@ -156,8 +157,9 @@ $trans-timing: 600ms; display:block; margin-left: auto; width: 100%; + /* stylelint-disable-next-line no-descending-specificity */ .submenu { - margin-left: 0px; + margin-left: 0; } } } @@ -221,8 +223,9 @@ $trans-timing: 600ms; overflow: visible; } &__language { - margin-left: 0px; + margin-left: 0; width: 50px; + /* stylelint-disable-next-line no-descending-specificity */ .submenu { margin-left: -105px; } @@ -232,10 +235,10 @@ $trans-timing: 600ms; flex: none; &__language { flex-shrink: 1; + height: 47px; min-width: 50px; overflow: hidden; - padding: 10px 0px; - height: 47px; + padding: 10px 0; svg { width: 24px; } diff --git a/_sass/_variables.scss b/_sass/_variables.scss index a4e17f7f..3e0bdcd6 100644 --- a/_sass/_variables.scss +++ b/_sass/_variables.scss @@ -27,3 +27,4 @@ $bp-desktop: 1200px; $tag-tests: #017e78; $tag-spec: #AB6700; $tag-presented: #a63446; +$tag-translation: #8234a6; diff --git a/translation.md b/translation.md new file mode 100644 index 00000000..085b30af --- /dev/null +++ b/translation.md @@ -0,0 +1,53 @@ +# Translation Guidelines + +The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose +native language may not be english. For this, we are working with the community to get basic +information about upcoming language features into their language. + +## Adding a translation of a feature + +To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a +description field is empty, that proposal needs a translation. Once you finish the translation(s), +you can open a pull request and ping a reviewer who can ok your translation. + +## Adding support for a new language + +To add a new language, you will need to create a couple of files. A good way to get started is to +clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary. + +Once you have created your folder, you will want to translate all text into your language. You will +also want to copy this readme file and translate it, so others can help you. + +With that finished, add your language to the [language list](https://github.com/tc39/tc39.github.io/blob/master/_config.yml#L21) and [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right. + +## Active reviewers + +To land your changes, you can request reviews from the following active reviewers: + +### For New Languages: + +- @codehag + +### German transation: + +- ... + +See the [German Translation documentation](translation_de.md) for more info. + +### Japanese Translation: + +- ... + +See the [Japanese Translation documentation](translation_ja.md) for more info. + +### Russian Translation: + +- ... + +See the [Russian Translation documentation](translation_ru.md) for more info. + +### Traditional Chinese Translation: + +- ... + +See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info. diff --git a/translation_de.md b/translation_de.md new file mode 100644 index 00000000..b7029cc8 --- /dev/null +++ b/translation_de.md @@ -0,0 +1,56 @@ +# Translation Guidelines + +The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose +native language may not be english. For this, we are working with the community to get basic +information about upcoming language features into their language. + +As English is the default TC39 language, this document serves as a general guidance on how to do +translations. + +## Adding a translation of a feature + +To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a +description field is empty, that proposal needs a translation. Once you finish the translation(s), +you can open a pull request and ping a reviewer who can ok your translation. + +## Adding support for a new language + +To add a new language, you will need to create a couple of files. A good way to get started is to +clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary. + +Once you have created your folder, you will want to translate all text into your language. You will +also want to copy this readme file and translate it, so others can help you. + +With that finished, add your language to the [language list](https://github.com/tc39/tc39.github.io/blob/master/_config.yml#L21) and [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right. + +## Active reviewers + +To land your changes, you can request reviews from the following active reviewers: + +### For New Languages: + +- @codehag + +### German transation: + +- ... + +See the [German Translation documentation](translation_de.md) for more info. + +### Japanese Translation: + +- ... + +See the [Japanese Translation documentation](translation_ja.md) for more info. + +### Russian Translation: + +- ... + +See the [Russian Translation documentation](translation_ru.md) for more info. + +### Traditional Chinese Translation: + +- ... + +See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info. diff --git a/translation_ja.md b/translation_ja.md new file mode 100644 index 00000000..b7029cc8 --- /dev/null +++ b/translation_ja.md @@ -0,0 +1,56 @@ +# Translation Guidelines + +The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose +native language may not be english. For this, we are working with the community to get basic +information about upcoming language features into their language. + +As English is the default TC39 language, this document serves as a general guidance on how to do +translations. + +## Adding a translation of a feature + +To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a +description field is empty, that proposal needs a translation. Once you finish the translation(s), +you can open a pull request and ping a reviewer who can ok your translation. + +## Adding support for a new language + +To add a new language, you will need to create a couple of files. A good way to get started is to +clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary. + +Once you have created your folder, you will want to translate all text into your language. You will +also want to copy this readme file and translate it, so others can help you. + +With that finished, add your language to the [language list](https://github.com/tc39/tc39.github.io/blob/master/_config.yml#L21) and [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right. + +## Active reviewers + +To land your changes, you can request reviews from the following active reviewers: + +### For New Languages: + +- @codehag + +### German transation: + +- ... + +See the [German Translation documentation](translation_de.md) for more info. + +### Japanese Translation: + +- ... + +See the [Japanese Translation documentation](translation_ja.md) for more info. + +### Russian Translation: + +- ... + +See the [Russian Translation documentation](translation_ru.md) for more info. + +### Traditional Chinese Translation: + +- ... + +See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info. diff --git a/translation_ru.md b/translation_ru.md new file mode 100644 index 00000000..b7029cc8 --- /dev/null +++ b/translation_ru.md @@ -0,0 +1,56 @@ +# Translation Guidelines + +The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose +native language may not be english. For this, we are working with the community to get basic +information about upcoming language features into their language. + +As English is the default TC39 language, this document serves as a general guidance on how to do +translations. + +## Adding a translation of a feature + +To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a +description field is empty, that proposal needs a translation. Once you finish the translation(s), +you can open a pull request and ping a reviewer who can ok your translation. + +## Adding support for a new language + +To add a new language, you will need to create a couple of files. A good way to get started is to +clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary. + +Once you have created your folder, you will want to translate all text into your language. You will +also want to copy this readme file and translate it, so others can help you. + +With that finished, add your language to the [language list](https://github.com/tc39/tc39.github.io/blob/master/_config.yml#L21) and [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right. + +## Active reviewers + +To land your changes, you can request reviews from the following active reviewers: + +### For New Languages: + +- @codehag + +### German transation: + +- ... + +See the [German Translation documentation](translation_de.md) for more info. + +### Japanese Translation: + +- ... + +See the [Japanese Translation documentation](translation_ja.md) for more info. + +### Russian Translation: + +- ... + +See the [Russian Translation documentation](translation_ru.md) for more info. + +### Traditional Chinese Translation: + +- ... + +See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info. diff --git a/translation_zh-Hans.md b/translation_zh-Hans.md new file mode 100644 index 00000000..b7029cc8 --- /dev/null +++ b/translation_zh-Hans.md @@ -0,0 +1,56 @@ +# Translation Guidelines + +The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose +native language may not be english. For this, we are working with the community to get basic +information about upcoming language features into their language. + +As English is the default TC39 language, this document serves as a general guidance on how to do +translations. + +## Adding a translation of a feature + +To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a +description field is empty, that proposal needs a translation. Once you finish the translation(s), +you can open a pull request and ping a reviewer who can ok your translation. + +## Adding support for a new language + +To add a new language, you will need to create a couple of files. A good way to get started is to +clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary. + +Once you have created your folder, you will want to translate all text into your language. You will +also want to copy this readme file and translate it, so others can help you. + +With that finished, add your language to the [language list](https://github.com/tc39/tc39.github.io/blob/master/_config.yml#L21) and [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right. + +## Active reviewers + +To land your changes, you can request reviews from the following active reviewers: + +### For New Languages: + +- @codehag + +### German transation: + +- ... + +See the [German Translation documentation](translation_de.md) for more info. + +### Japanese Translation: + +- ... + +See the [Japanese Translation documentation](translation_ja.md) for more info. + +### Russian Translation: + +- ... + +See the [Russian Translation documentation](translation_ru.md) for more info. + +### Traditional Chinese Translation: + +- ... + +See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info.