58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
/**
|
|
* Copyright (c) Nicolas Gallagher.
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
*
|
|
*/
|
|
import ExecutionEnvironment from 'fbjs/lib/ExecutionEnvironment';
|
|
var doLeftAndRightSwapInRTL = true;
|
|
var isPreferredLanguageRTL = false;
|
|
var isRTLAllowed = true;
|
|
var isRTLForced = false;
|
|
|
|
var isRTL = function isRTL() {
|
|
if (isRTLForced) {
|
|
return true;
|
|
}
|
|
|
|
return isRTLAllowed && isPreferredLanguageRTL;
|
|
};
|
|
|
|
var onDirectionChange = function onDirectionChange() {
|
|
if (ExecutionEnvironment.canUseDOM) {
|
|
if (document.documentElement && document.documentElement.setAttribute) {
|
|
document.documentElement.setAttribute('dir', isRTL() ? 'rtl' : 'ltr');
|
|
}
|
|
}
|
|
};
|
|
|
|
var I18nManager = {
|
|
allowRTL: function allowRTL(bool) {
|
|
isRTLAllowed = bool;
|
|
onDirectionChange();
|
|
},
|
|
forceRTL: function forceRTL(bool) {
|
|
isRTLForced = bool;
|
|
onDirectionChange();
|
|
},
|
|
setPreferredLanguageRTL: function setPreferredLanguageRTL(bool) {
|
|
isPreferredLanguageRTL = bool;
|
|
onDirectionChange();
|
|
},
|
|
swapLeftAndRightInRTL: function swapLeftAndRightInRTL(bool) {
|
|
doLeftAndRightSwapInRTL = bool;
|
|
},
|
|
|
|
get doLeftAndRightSwapInRTL() {
|
|
return doLeftAndRightSwapInRTL;
|
|
},
|
|
|
|
get isRTL() {
|
|
return isRTL();
|
|
}
|
|
|
|
};
|
|
export default I18nManager; |