aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/helpers/l10n.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-web/src/main/js/helpers/l10n.ts')
-rw-r--r--server/sonar-web/src/main/js/helpers/l10n.ts129
1 files changed, 5 insertions, 124 deletions
diff --git a/server/sonar-web/src/main/js/helpers/l10n.ts b/server/sonar-web/src/main/js/helpers/l10n.ts
index 9b8fafa258e..149955f2844 100644
--- a/server/sonar-web/src/main/js/helpers/l10n.ts
+++ b/server/sonar-web/src/main/js/helpers/l10n.ts
@@ -17,22 +17,13 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import { fetchL10nBundle } from '../api/l10n';
-import { L10nBundle, L10nBundleRequestParams } from '../types/l10n';
-import { Dict } from '../types/types';
-import { toNotSoISOString } from './dates';
-import { get as loadFromLocalStorage, save as saveInLocalStorage } from './storage';
-export type Messages = Dict<string>;
+import { getMessages } from './l10nBundle';
-export const DEFAULT_LOCALE = 'en';
-export const DEFAULT_MESSAGES = {
- // eslint-disable-next-line camelcase
- default_error_message: 'The request cannot be processed. Try again later.'
-};
-
-let allMessages: Messages = {};
-let locale: string | undefined;
+export function hasMessage(...keys: string[]): boolean {
+ const messageKey = keys.join('.');
+ return getMessages()[messageKey] != null;
+}
export function translate(...keys: string[]): string {
const messageKey = keys.join('.');
@@ -61,23 +52,6 @@ export function translateWithParameters(
return `${messageKey}.${parameters.join('.')}`;
}
-export function hasMessage(...keys: string[]): boolean {
- const messageKey = keys.join('.');
- return getMessages()[messageKey] != null;
-}
-
-export function getMessages() {
- if (typeof allMessages === 'undefined') {
- logWarning('L10n messages are not initialized. Use default messages.');
- return DEFAULT_MESSAGES;
- }
- return allMessages;
-}
-
-export function resetMessages(newMessages: Messages) {
- allMessages = newMessages;
-}
-
export function getLocalizedMetricName(
metric: { key: string; name?: string },
short = false
@@ -101,14 +75,6 @@ export function getLocalizedMetricDomain(domainName: string) {
return hasMessage(bundleKey) ? translate(bundleKey) : domainName;
}
-export function getCurrentLocale() {
- return locale;
-}
-
-export function resetCurrentLocale(newLocale: string) {
- locale = newLocale;
-}
-
export function getShortMonthName(index: number) {
const months = [
'Jan',
@@ -136,88 +102,3 @@ export function getShortWeekDayName(index: number) {
const weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
return weekdays[index] ? translate(weekdays[index]) : '';
}
-
-const L10N_BUNDLE_LS_KEY = 'l10n.bundle';
-
-export async function loadL10nBundle() {
- const bundle = await getLatestL10nBundle().catch(() => ({
- locale: DEFAULT_LOCALE,
- messages: {}
- }));
-
- resetCurrentLocale(bundle.locale);
- resetMessages(bundle.messages);
-
- return bundle;
-}
-
-export async function getLatestL10nBundle() {
- const browserLocale = getPreferredLanguage();
- const cachedBundle = loadL10nBundleFromLocalStorage();
-
- const params: L10nBundleRequestParams = {};
-
- if (browserLocale) {
- params.locale = browserLocale;
-
- if (
- cachedBundle.locale &&
- browserLocale.startsWith(cachedBundle.locale) &&
- cachedBundle.timestamp &&
- cachedBundle.messages
- ) {
- params.ts = cachedBundle.timestamp;
- }
- }
-
- const { effectiveLocale, messages } = await fetchL10nBundle(params).catch(response => {
- if (response && response.status === 304) {
- return {
- effectiveLocale: cachedBundle.locale || browserLocale || DEFAULT_LOCALE,
- messages: cachedBundle.messages ?? {}
- };
- }
- throw new Error(`Unexpected status code: ${response.status}`);
- });
-
- const bundle = {
- timestamp: toNotSoISOString(new Date()),
- locale: effectiveLocale,
- messages
- };
-
- saveL10nBundleToLocalStorage(bundle);
-
- return bundle;
-}
-
-export function getCurrentL10nBundle() {
- return loadL10nBundleFromLocalStorage();
-}
-
-function getPreferredLanguage() {
- return window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
-}
-
-function loadL10nBundleFromLocalStorage() {
- let bundle: L10nBundle;
-
- try {
- bundle = JSON.parse(loadFromLocalStorage(L10N_BUNDLE_LS_KEY) ?? '{}');
- } catch {
- bundle = {};
- }
-
- return bundle;
-}
-
-function saveL10nBundleToLocalStorage(bundle: L10nBundle) {
- saveInLocalStorage(L10N_BUNDLE_LS_KEY, JSON.stringify(bundle));
-}
-
-function logWarning(message: string) {
- if (process.env.NODE_ENV !== 'production') {
- // eslint-disable-next-line no-console
- console.warn(message);
- }
-}