Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. </head>
  5. <body>
  6. <div>
  7. <h1 data-i18n='title'>Company b2b website</h1>
  8. <p data-i18n='text'>The most accessible of Tokyo's Izu Islands, Hachijojima is a short, direct flight from Haneda Airport, making it the quickest and easiest subtropical retreat from the city. Escape the concrete jungle for the beautiful nature and unique culture of this off-the-beaten-track destination.</p>
  9.  
  10. <input data-i18n-placeholder='input-placeholder' type="text" placeholder="Enter username" />
  11. <input data-i18n='input-button' type="button" value="Button" />
  12.  
  13. <div data-i18n-show='en'>
  14. <hr>
  15. Show in En
  16. </div>
  17.  
  18. <div data-i18n-show='ja'>
  19. <hr>
  20. Show in Ja
  21. </div>
  22. <hr>
  23.  
  24. <span data-i18n='choose-language'>Choose language:</span>
  25. <select data-i18n-select>
  26. <option value="en">EN</option>
  27. <option value="ko">KO</option>
  28. <option value="ja">JA</option>
  29. </select>
  30. </div>
  31.  
  32. <script>
  33. var texts = {
  34. en: {
  35. title: 'Company B2B website',
  36. text: "The most accessible of Tokyo's Izu Islands, Hachijojima is a short, direct " +
  37. "flight from Haneda Airport, making it the quickest and easiest subtropical retreat " +
  38. "from the city. Escape the concrete jungle for the beautiful nature and unique culture of this off-the-beaten-track destination.",
  39. 'choose-language': 'Choose language:',
  40. 'input-placeholder': 'Enter username',
  41. 'input-button': 'Button',
  42. },
  43. ko: {
  44. title: 'Company B2B 웹 사이트',
  45. text: "도쿄에서 비행기로 단 1시간이면 도착하는 아열대 화산섬",
  46. 'choose-language': '언어 선택:',
  47. 'input-placeholder': '사용자 이름을 입력하십시오',
  48. 'input-button': '단추',
  49. },
  50. ja: {
  51. title: 'Company B2B ウェブサイト',
  52. text: "東京の伊豆諸島で最もアクセスが良い八丈島は、羽田空港からの短時間の直行便で行くことができる、亜熱帯のリゾートです。コンクリートジャングルを脱出し、八丈島の美しい自然とユニークな文化を体験しましょう。",
  53. 'choose-language': '言語を選択:',
  54. 'input-placeholder': 'ユーザー名',
  55. 'input-button': 'ボタン',
  56. }
  57. }
  58.  
  59. // --------------------------
  60.  
  61. function translatePage(language) {
  62. translateTexts(language);
  63. translatePlaceholders(language);
  64. showLanguageSpecificElements(language);
  65. }
  66.  
  67. function translateTexts(language) {
  68. var i18n = texts[language] || texts['en'];
  69.  
  70. var i18nEls = document.querySelectorAll('[data-i18n]');
  71. for (var i = 0; i < i18nEls.length; i++) {
  72. var i18nEl = i18nEls[i];
  73. var i18nKey = i18nEl.getAttribute('data-i18n');
  74. var propToChange = i18nEl.value ? 'value' : 'innerHTML';
  75. i18nEl[propToChange] = i18n[i18nKey];
  76. }
  77. }
  78.  
  79. function translatePlaceholders(language) {
  80. var i18n = texts[language] || texts['en'];
  81.  
  82. var i18nEls = document.querySelectorAll('[data-i18n-placeholder]');
  83. for (var i = 0; i < i18nEls.length; i++) {
  84. var i18nEl = i18nEls[i];
  85. var i18nKey = i18nEl.getAttribute('data-i18n-placeholder');
  86. i18nEl.placeholder = i18n[i18nKey] || '';
  87. }
  88. }
  89.  
  90. function showLanguageSpecificElements(language) {
  91. var i18nEls = document.querySelectorAll('[data-i18n-show]');
  92. for (var i = 0; i < i18nEls.length; i++) {
  93. var i18nEl = i18nEls[i];
  94. var i18nLangVisibility = i18nEl.getAttribute('data-i18n-show');
  95. i18nEl.style.display = i18nLangVisibility === language ? 'inherit' : 'none';
  96. }
  97. }
  98.  
  99. function getLanguage() {
  100. return readLanguageFromCookie() ||
  101. (navigator.language || 'ja').split('-')[0];
  102. }
  103.  
  104. function changeLanguage(language) {
  105. storeLanguageInCookie(language);
  106. translatePage(language);
  107. }
  108.  
  109. function readLanguageFromCookie() {
  110. return (document.cookie.match('(^|[^;]+)\\s*' + 'language' + '\\s*=\\s*([^;]+)') || []).pop();
  111. }
  112.  
  113. function storeLanguageInCookie(language) {
  114. document.cookie = "language=" + language;
  115. }
  116.  
  117. function init() {
  118. var language = getLanguage();
  119. var selectEl = document.querySelector('[data-i18n-select]');
  120.  
  121. selectEl.addEventListener('change', function(e) { changeLanguage(e.target.value); })
  122. selectEl.value = language;
  123. translatePage(language);
  124. }
  125.  
  126. init();
  127. </script>
  128. </body>
  129. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement