@arcblock/ux 2.4.32 → 2.4.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,7 @@ var _Util = require("../Util");
20
20
 
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
22
 
23
- const _excluded = ["children", "locale", "translations", "languages"];
23
+ const _excluded = ["children", "locale", "fallbackLocale", "translations", "languages"];
24
24
 
25
25
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
26
 
@@ -94,6 +94,7 @@ function LocaleProvider(_ref) {
94
94
  let {
95
95
  children,
96
96
  locale,
97
+ fallbackLocale,
97
98
  translations,
98
99
  languages
99
100
  } = _ref,
@@ -118,6 +119,13 @@ function LocaleProvider(_ref) {
118
119
  const translate = (key, data) => {
119
120
  if (!translations[currentLocale] || !translations[currentLocale][key]) {
120
121
  console.warn("Warning: no ".concat(key, " translation of ").concat(currentLocale));
122
+
123
+ if (fallbackLocale) {
124
+ var _translations$fallbac;
125
+
126
+ return ((_translations$fallbac = translations[fallbackLocale]) === null || _translations$fallbac === void 0 ? void 0 : _translations$fallbac[key]) || key;
127
+ }
128
+
121
129
  return key;
122
130
  }
123
131
 
@@ -144,6 +152,8 @@ LocaleProvider.propTypes = {
144
152
  children: _propTypes.default.any.isRequired,
145
153
  translations: _propTypes.default.object.isRequired,
146
154
  locale: _propTypes.default.string,
155
+ // 会影响 translate(key) 的结果 - 当 key 无效时查找 fallbackLocale 对应的翻译结果
156
+ fallbackLocale: _propTypes.default.string,
147
157
  languages: _propTypes.default.arrayOf(_propTypes.default.shape({
148
158
  value: _propTypes.default.string,
149
159
  text: _propTypes.default.string
@@ -151,6 +161,7 @@ LocaleProvider.propTypes = {
151
161
  };
152
162
  LocaleProvider.defaultProps = {
153
163
  locale: '',
164
+ fallbackLocale: '',
154
165
  languages: [{
155
166
  value: 'en',
156
167
  text: 'English'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.4.32",
3
+ "version": "2.4.33",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -47,10 +47,10 @@
47
47
  "react": ">=18.1.0",
48
48
  "react-ga": "^2.7.0"
49
49
  },
50
- "gitHead": "2d5ae94d1098073c5483f53af3613f0976841a5a",
50
+ "gitHead": "d7a8cfbbcc9f926305b0da8c4507c510190a105e",
51
51
  "dependencies": {
52
- "@arcblock/icons": "^2.4.32",
53
- "@arcblock/react-hooks": "^2.4.32",
52
+ "@arcblock/icons": "^2.4.33",
53
+ "@arcblock/react-hooks": "^2.4.33",
54
54
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
55
55
  "@emotion/react": "^11.10.0",
56
56
  "@emotion/styled": "^11.10.0",
@@ -44,7 +44,7 @@ const replace = (template, data) =>
44
44
 
45
45
  const LocaleContext = createContext();
46
46
  const { Provider, Consumer } = LocaleContext;
47
- function LocaleProvider({ children, locale, translations, languages, ...rest }) {
47
+ function LocaleProvider({ children, locale, fallbackLocale, translations, languages, ...rest }) {
48
48
  const [currentLocale, setCurrentLocale] = useState(locale || getLocale(languages));
49
49
 
50
50
  const changeLocale = (newLocale) => {
@@ -63,6 +63,9 @@ function LocaleProvider({ children, locale, translations, languages, ...rest })
63
63
  const translate = (key, data) => {
64
64
  if (!translations[currentLocale] || !translations[currentLocale][key]) {
65
65
  console.warn(`Warning: no ${key} translation of ${currentLocale}`);
66
+ if (fallbackLocale) {
67
+ return translations[fallbackLocale]?.[key] || key;
68
+ }
66
69
  return key;
67
70
  }
68
71
 
@@ -83,11 +86,14 @@ LocaleProvider.propTypes = {
83
86
  children: PropTypes.any.isRequired,
84
87
  translations: PropTypes.object.isRequired,
85
88
  locale: PropTypes.string,
89
+ // 会影响 translate(key) 的结果 - 当 key 无效时查找 fallbackLocale 对应的翻译结果
90
+ fallbackLocale: PropTypes.string,
86
91
  languages: PropTypes.arrayOf(PropTypes.shape({ value: PropTypes.string, text: PropTypes.string })),
87
92
  };
88
93
 
89
94
  LocaleProvider.defaultProps = {
90
95
  locale: '',
96
+ fallbackLocale: '',
91
97
  languages: [
92
98
  { value: 'en', text: 'English' },
93
99
  { value: 'zh', text: '简体中文' },