diff --git a/src/CONST.js b/src/CONST.js index a2c4e09004e..ddc63417e40 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -88,6 +88,7 @@ const CONST = { FREE_PLAN: 'freePlan', DEFAULT_ROOMS: 'defaultRooms', BETA_EXPENSIFY_WALLET: 'expensifyWallet', + INTERNATIONALIZATION: 'internationalization', }, BUTTON_STATES: { DEFAULT: 'default', diff --git a/src/components/LocalePicker.js b/src/components/LocalePicker.js index ed394a93718..6df228ca477 100644 --- a/src/components/LocalePicker.js +++ b/src/components/LocalePicker.js @@ -6,6 +6,7 @@ import {setLocale} from '../libs/actions/App'; import withLocalize, {withLocalizePropTypes} from './withLocalize'; import ONYXKEYS from '../ONYXKEYS'; import CONST from '../CONST'; +import Permissions from '../libs/Permissions'; import {translate} from '../libs/translate'; import ExpensiPicker from './ExpensiPicker'; @@ -16,12 +17,16 @@ const propTypes = { /** Indicates size of a picker component and whether to render the label or not */ size: PropTypes.oneOf(['normal', 'small']), + /** Beta features list */ + betas: PropTypes.arrayOf(PropTypes.string), + ...withLocalizePropTypes, }; const defaultProps = { preferredLocale: CONST.DEFAULT_LOCALE, size: 'normal', + betas: [], }; const localesToLanguages = { @@ -37,20 +42,26 @@ const localesToLanguages = { const LocalePicker = ({ // eslint-disable-next-line no-shadow - preferredLocale, translate, size, -}) => ( - { - if (locale !== preferredLocale) { - setLocale(locale); - } - }} - items={Object.values(localesToLanguages)} - size={size} - value={preferredLocale} - /> -); + preferredLocale, translate, betas, size, +}) => { + if (!Permissions.canUseInternationalization(betas)) { + return null; + } + + return ( + { + if (locale !== preferredLocale) { + setLocale(locale); + } + }} + items={Object.values(localesToLanguages)} + size={size} + value={preferredLocale} + /> + ); +}; LocalePicker.defaultProps = defaultProps; LocalePicker.propTypes = propTypes; @@ -62,5 +73,8 @@ export default compose( preferredLocale: { key: ONYXKEYS.NVP_PREFERRED_LOCALE, }, + betas: { + key: ONYXKEYS.BETAS, + }, }), )(LocalePicker); diff --git a/src/libs/Permissions.js b/src/libs/Permissions.js index 86fd6a5fa39..bf1850cb9b8 100644 --- a/src/libs/Permissions.js +++ b/src/libs/Permissions.js @@ -51,6 +51,14 @@ function canUseDefaultRooms(betas) { return _.contains(betas, CONST.BETAS.DEFAULT_ROOMS) || canUseAllBetas(betas); } +/** + * @param {Array} betas + * @returns {Boolean} + */ +function canUseInternationalization(betas) { + return _.contains(betas, CONST.BETAS.INTERNATIONALIZATION) || canUseAllBetas(betas); +} + /** * @param {Array} betas * @returns {Boolean} @@ -65,5 +73,6 @@ export default { canUsePayWithExpensify, canUseFreePlan, canUseDefaultRooms, + canUseInternationalization, canUseWallet, };