import { myAuthRequired } from "@utils/app";
+import getUserInterfaceLangId from "@utils/app/user-interface-language";
import { capitalizeFirstLetter } from "@utils/helpers";
import { Component } from "inferno";
import { T } from "inferno-i18next-dess";
: undefined
: undefined;
+ const userInterfaceLangId = !UserService.Instance.myUserInfo
+ ? 0
+ : getUserInterfaceLangId({
+ myUserInfo: UserService.Instance.myUserInfo,
+ allLanguages: this.props.allLanguages,
+ });
+
return (
<div
className={["comment-form", "mb-3", this.props.containerClass].join(
{UserService.Instance.myUserInfo ? (
<MarkdownTextArea
initialContent={initialContent}
+ initialLanguageId={userInterfaceLangId}
showLanguage
buttonTitle={this.buttonTitle}
finished={this.props.finished}
<LanguageSelect
iconVersion
allLanguages={this.props.allLanguages}
+ // Only set the selected language ID if it exists as an option
+ // in the dropdown; otherwise, set it to 0 (Undetermined)
selectedLanguageIds={
- languageId ? Array.of(languageId) : undefined
+ languageId && this.props.siteLanguages.includes(languageId)
+ ? Array.of(languageId)
+ : [0]
}
siteLanguages={this.props.siteLanguages}
onChange={this.handleLanguageChange}
myAuth,
myAuthRequired,
} from "@utils/app";
+import getUserInterfaceLangId from "@utils/app/user-interface-language";
import {
capitalizeFirstLetter,
debounce,
}
render() {
- const firstLang = this.state.form.language_id;
- const selectedLangs = firstLang ? Array.of(firstLang) : undefined;
-
const url = this.state.form.url;
+ const userInterfaceLangId = !UserService.Instance.myUserInfo
+ ? 0
+ : getUserInterfaceLangId({
+ myUserInfo: UserService.Instance.myUserInfo,
+ allLanguages: this.props.allLanguages,
+ });
+
return (
<form className="post-form" onSubmit={linkEvent(this, handlePostSubmit)}>
<NavigationPrompt
</div>
<LanguageSelect
allLanguages={this.props.allLanguages}
+ selectedLanguageIds={[userInterfaceLangId]}
siteLanguages={this.props.siteLanguages}
- selectedLanguageIds={selectedLangs}
multiple={false}
onChange={this.handleLanguageChange}
/>
import siteBannerCss from "./site-banner-css";
import updateCommunityBlock from "./update-community-block";
import updatePersonBlock from "./update-person-block";
+import getUserInterfaceLangId from "./user-interface-language";
export {
buildCommentsTree,
getIdFromProps,
getRecipientIdFromProps,
getUpdatedSearchId,
+ getUserInterfaceLangId,
initializeSite,
insertCommentIntoTree,
isAuthPath,
--- /dev/null
+import { Language, MyUserInfo } from "lemmy-js-client";
+import { I18NextService } from "../../services/I18NextService";
+
+export default function getUserInterfaceLanguageId({
+ myUserInfo,
+ allLanguages,
+}: {
+ myUserInfo: MyUserInfo;
+ allLanguages: Language[];
+}): number {
+ // Get the string of the browser- or user-defined language, like en-US
+ const i18nLang = I18NextService.i18n.language;
+
+ // Find the Language object with a code that matches the initial characters of
+ // this string
+ const userLang = allLanguages.find(lang => {
+ return i18nLang.indexOf(lang.code) === 0;
+ });
+
+ // Return the ID of that language object, or "0" for Undetermined
+ return userLang.id || 0;
+}