fix(i18n): correct usage of language str having underline
parent
b7f37138f8
commit
ef45ea5a50
|
@ -130,14 +130,20 @@ export const hashCode = (s) => {
|
||||||
return hash;
|
return hash;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* convert `i18n.language` style str (e.g.: `en_US`) to kebab-case (e.g.: `en-US`),
|
||||||
|
* which is expected by `<html lang>` and `Intl.DateTimeFormat`
|
||||||
|
*/
|
||||||
|
export const getKebabCaseLangStr = (language) => language.replace(/_/g, '-');
|
||||||
|
|
||||||
export const formatShortDateTime = (timestamp, language) =>
|
export const formatShortDateTime = (timestamp, language) =>
|
||||||
new Intl.DateTimeFormat(language, {
|
new Intl.DateTimeFormat(getKebabCaseLangStr(language), {
|
||||||
dateStyle: "short",
|
dateStyle: "short",
|
||||||
timeStyle: "short",
|
timeStyle: "short",
|
||||||
}).format(new Date(timestamp * 1000));
|
}).format(new Date(timestamp * 1000));
|
||||||
|
|
||||||
export const formatShortDate = (timestamp, language) =>
|
export const formatShortDate = (timestamp, language) =>
|
||||||
new Intl.DateTimeFormat(language, { dateStyle: "short" }).format(new Date(timestamp * 1000));
|
new Intl.DateTimeFormat(getKebabCaseLangStr(language), { dateStyle: "short" }).format(new Date(timestamp * 1000));
|
||||||
|
|
||||||
export const formatBytes = (bytes, decimals = 2) => {
|
export const formatBytes = (bytes, decimals = 2) => {
|
||||||
if (bytes === 0) return "0 bytes";
|
if (bytes === 0) return "0 bytes";
|
||||||
|
|
|
@ -11,7 +11,7 @@ import ActionBar from "./ActionBar";
|
||||||
import Preferences from "./Preferences";
|
import Preferences from "./Preferences";
|
||||||
import subscriptionManager from "../app/SubscriptionManager";
|
import subscriptionManager from "../app/SubscriptionManager";
|
||||||
import userManager from "../app/UserManager";
|
import userManager from "../app/UserManager";
|
||||||
import { expandUrl } from "../app/utils";
|
import { expandUrl, getKebabCaseLangStr } from "../app/utils";
|
||||||
import ErrorBoundary from "./ErrorBoundary";
|
import ErrorBoundary from "./ErrorBoundary";
|
||||||
import routes from "./routes";
|
import routes from "./routes";
|
||||||
import { useAccountListener, useBackgroundProcesses, useConnectionListeners, useWebPushTopics } from "./hooks";
|
import { useAccountListener, useBackgroundProcesses, useConnectionListeners, useWebPushTopics } from "./hooks";
|
||||||
|
@ -56,7 +56,7 @@ const App = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
document.documentElement.setAttribute("lang", i18n.language);
|
document.documentElement.setAttribute("lang", getKebabCaseLangStr(i18n.language));
|
||||||
document.dir = languageDir;
|
document.dir = languageDir;
|
||||||
}, [i18n.language, languageDir]);
|
}, [i18n.language, languageDir]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue