]> git.localhorst.tv Git - alttp.git/commitdiff
add language references to tech pages
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 10 Feb 2023 15:48:51 +0000 (16:48 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 10 Feb 2023 15:48:51 +0000 (16:48 +0100)
resources/js/components/App.js
resources/js/components/common/LanguageSwitcher.js
resources/js/components/pages/Technique.js
resources/js/helpers/Technique.js

index 9656da2a75bd08aa74344af3508daf5e5aba8042..44c19bd7e6dd36556d461a04bc4e0f337b6646fc 100644 (file)
@@ -15,6 +15,7 @@ import Tournament from './pages/Tournament';
 import User from './pages/User';
 import AlttpBaseRomProvider from '../helpers/AlttpBaseRomContext';
 import UserContext from '../helpers/UserContext';
+import i18n from '../i18n';
 
 const App = () => {
        const [user, setUser] = useState(null);
@@ -62,6 +63,7 @@ const App = () => {
                <AlttpBaseRomProvider>
                        <UserContext.Provider value={user}>
                                <Helmet>
+                                       <html lang={i18n.language} />
                                        <title>{t('general.appName')}</title>
                                        <meta name="description" content={t('general.appDescription')} />
                                </Helmet>
index ff8b19727abe000f7d6ed5fcd9feb608e0a51997..c6ae66a0fa2cf3927975f893833520d41aa0cbfb 100644 (file)
@@ -17,7 +17,8 @@ const setLanguage = (user, language) => {
 
 const LanguageSwitcher = ({ user }) =>
 <Button
-       onClick={() => { setLanguage(user, i18n.language === 'de' ? 'en' : 'de'); }}
+       href={`?lng=${i18n.language === 'de' ? 'en' : 'de'}`}
+       onClick={e => { setLanguage(user, i18n.language === 'de' ? 'en' : 'de'); e.preventDefault(); }}
        title={i18n.language === 'de' ? 'Switch to english' : 'Auf deutsch wechseln'}
        variant="outline-secondary"
 >
index e38061106a5d582bf9368fe05d6f6ab34e1a8f91..aabb8d0780db86a73be7e50133fe66ac2a66d7c8 100644 (file)
@@ -9,7 +9,7 @@ import ErrorMessage from '../common/ErrorMessage';
 import Loading from '../common/Loading';
 import NotFound from '../pages/NotFound';
 import Detail from '../techniques/Detail';
-import { getTranslation } from '../../helpers/Technique';
+import { getLanguages, getTranslation } from '../../helpers/Technique';
 import i18n from '../../i18n';
 
 const Technique = () => {
@@ -56,6 +56,19 @@ const Technique = () => {
                <Helmet>
                        <title>{getTranslation(technique, 'title', i18n.language)}</title>
                        <meta name="description" content={getTranslation(technique, 'short', i18n.language)} />
+                       <link
+                               href={`https://alttp.localhorst.tv/tech/${technique.name}`}
+                               hrefLang="x-default"
+                               rel="alternate"
+                       />
+                       {getLanguages(technique).map(l =>
+                               <link
+                                       key={l}
+                                       href={`https://alttp.localhorst.tv/tech/${technique.name}?lng=${l}`}
+                                       hrefLang={l}
+                                       rel="alternate"
+                               />
+                       )}
                </Helmet>
                <Detail technique={technique} />
        </ErrorBoundary>;
index 1a8f4fc91f0fe92d3bb874816340eab8d4be9ef6..c1375bb6c787810119c624aa7de5169aafd3e65d 100644 (file)
@@ -17,6 +17,8 @@ export const getRelations = (tech, type) => {
 
 export const hasRelations = (tech, type) => getRelations(tech, type).length > 0;
 
+export const getLanguages = tech => ['en', ...tech.translations.map(t => t.locale)];
+
 export const getTranslation = (tech, prop, lang) => {
        const direct = tech.translations.find(t => t.locale === lang);
        if (direct) {
@@ -36,6 +38,7 @@ export const sorted = (techs) => [...techs].sort(compareTranslation('title', i18
 
 export default {
        compareTranslation,
+       getLanguages,
        getRelations,
        getTranslation,
        hasRelations,