Skip to content
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

Gutenberg: Improve I18n types #26171

Merged
merged 2 commits into from
Oct 30, 2020
Merged

Gutenberg: Improve I18n types #26171

merged 2 commits into from
Oct 30, 2020

Conversation

sirreal
Copy link
Member

@sirreal sirreal commented Oct 15, 2020

Description

Improve the types of translation methods for @wordpress/i18n. They were all Function which is much more generic. Now they are the full function types with parameters and returns.

Diff in typings
diff --git a/build-types/create-i18n.d.ts b/../create-i18n.d.ts
index 240c96ea15..cd3d7b4c93 100644
--- a/build-types/create-i18n.d.ts
+++ b/../create-i18n.d.ts
@@ -2,6 +2,38 @@ export function createI18n(initialData?: Record<string, any> | undefined, initia
 export type LocaleData = {
     [x: string]: any;
 };
+/**
+ * Merges locale data into the Tannin instance by domain. Accepts data in a
+ * Jed-formatted JSON object shape.
+ */
+export type SetLocaleData = (data?: Record<string, any> | undefined, domain?: string | undefined) => void;
+/**
+ * Retrieve the translation of text.
+ */
+export type __ = (text: string, domain?: string | undefined) => string;
+/**
+ * Retrieve translated string with gettext context.
+ */
+export type _x = (text: string, context: string, domain?: string | undefined) => string;
+/**
+ * Translates and retrieves the singular or plural form based on the supplied
+ * number.
+ */
+export type _n = (single: string, plural: string, number: number, domain?: string | undefined) => string;
+/**
+ * Translates and retrieves the singular or plural form based on the supplied
+ * number, with gettext context.
+ */
+export type _nx = (single: string, plural: string, number: number, context: string, domain?: string | undefined) => string;
+/**
+ * Check if current locale is RTL.
+ *
+ * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.
+ * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common
+ * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,
+ * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).
+ */
+export type IsRtl = () => boolean;
 /**
  * An i18n instance
  */
@@ -10,28 +42,28 @@ export type I18n = {
      * Merges locale data into the Tannin instance by domain. Accepts data in a
      * Jed-formatted JSON object shape.
      */
-    setLocaleData: Function;
+    setLocaleData: SetLocaleData;
     /**
      * Retrieve the translation of text.
      */
-    __: Function;
+    __: __;
     /**
      * Retrieve translated string with gettext context.
      */
-    _x: Function;
+    _x: _x;
     /**
      * Translates and retrieves the singular or plural form based on the supplied
      * number.
      */
-    _n: Function;
+    _n: _n;
     /**
      * Translates and retrieves the singular or plural form based on the supplied
      * number, with gettext context.
      */
-    _nx: Function;
+    _nx: _nx;
     /**
      * Check if current locale is RTL.
      */
-    isRTL: Function;
+    isRTL: IsRtl;
 };
 //# sourceMappingURL=create-i18n.d.ts.map
\ No newline at end of file

How has this been tested?

Tests and typechecking pass.

Types of changes

New feature: Improved types.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@sirreal sirreal self-assigned this Oct 15, 2020
@sirreal sirreal requested a review from ockham October 15, 2020 19:53
@sirreal sirreal added [Package] i18n /packages/i18n [Type] Code Quality Issues or PRs that relate to code quality npm Packages Related to npm packages labels Oct 15, 2020
@github-actions
Copy link

github-actions bot commented Oct 15, 2020

Size Change: 0 B

Total Size: 1.21 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.78 kB 0 B
build/api-fetch/index.js 3.45 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 8.72 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 130 kB 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.97 kB 0 B
build/block-library/editor.css 8.97 kB 0 B
build/block-library/index.js 146 kB 0 B
build/block-library/style-rtl.css 7.83 kB 0 B
build/block-library/style.css 7.84 kB 0 B
build/block-library/theme-rtl.css 837 B 0 B
build/block-library/theme.css 838 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 172 kB 0 B
build/components/style-rtl.css 15.2 kB 0 B
build/components/style.css 15.2 kB 0 B
build/compose/index.js 9.81 kB 0 B
build/core-data/index.js 12.3 kB 0 B
build/data-controls/index.js 772 B 0 B
build/data/index.js 8.77 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.46 kB 0 B
build/edit-navigation/index.js 11.2 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.4 kB 0 B
build/edit-post/style.css 6.39 kB 0 B
build/edit-site/index.js 22.1 kB 0 B
build/edit-site/style-rtl.css 3.88 kB 0 B
build/edit-site/style.css 3.88 kB 0 B
build/edit-widgets/index.js 26.4 kB 0 B
build/edit-widgets/style-rtl.css 3.12 kB 0 B
build/edit-widgets/style.css 3.12 kB 0 B
build/editor/editor-styles-rtl.css 480 B 0 B
build/editor/editor-styles.css 482 B 0 B
build/editor/index.js 43.1 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 7.7 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 712 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.11 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.34 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.42 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 791 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/reusable-blocks/index.js 3.06 kB 0 B
build/rich-text/index.js 13.2 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

Copy link
Contributor

@sarayourfriend sarayourfriend left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, great improvement, thank you!

packages/i18n/src/create-i18n.js Outdated Show resolved Hide resolved
sirreal and others added 2 commits October 30, 2020 18:07
Co-authored-by: Sara Marcondes <saram@fastmail.com>
@sirreal sirreal merged commit af56fa8 into master Oct 30, 2020
@sirreal sirreal deleted the update/improve-i18n-types branch October 30, 2020 22:05
@github-actions github-actions bot added this to the Gutenberg 9.3 milestone Oct 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
npm Packages Related to npm packages [Package] i18n /packages/i18n [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants