Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save poudelmadhav/7d4221188eaef718732366aad7b5a374 to your computer and use it in GitHub Desktop.
Save poudelmadhav/7d4221188eaef718732366aad7b5a374 to your computer and use it in GitHub Desktop.
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
if(request.uri == '/') {
if (typeof headers['accept-language'] !== 'undefined') {
const supportedLanguages = headers['accept-language'][0].value;
console.log('Supported languages:', supportedLanguages);
if(supportedLanguages.startsWith('en')){
callback(null, redirect('/en/index.html'));
} else if(supportedLanguages.startsWith('ja')){
callback(null, redirect('/ja/index.html'));
} else if(supportedLanguages.startsWith('fr')){
callback(null, redirect('/fr/'));
} else if(supportedLanguages.startsWith('it')){
callback(null, redirect('/it/'));
} else if(supportedLanguages.startsWith('pl')){
callback(null, redirect('/pl-PL/'));
} else {
callback(null, redirect('/ja/index.html'));
}
} else {
callback(null, redirect('/ja/index.html'));
}
} else {
callback(null, request);
}
};
function redirect (to) {
return {
status: '301',
statusDescription: 'redirect to browser language',
headers: {
location: [{ key: 'Location', value: to }]
}
};
}
@roshanadhikari2073
Copy link

const languagePathMap = {
  'en': '/en/index.html',
  'ja': '/ja/index.html',
  'fr': '/fr/',
  'it': '/it/',
  'pl': '/pl-PL/',
};

const defaultLanguagePath = '/ja/index.html';

if (request.uri == '/') {
  const languageHeader = headers['accept-language'] ? headers['accept-language'][0].value : '';
  const languagePrefix = languageHeader.split(',')[0].split('-')[0]; // Get the primary language code
  const redirectPath = languagePathMap[languagePrefix] || defaultLanguagePath;
  callback(null, redirect(redirectPath));
} else {
  callback(null, request);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment