• 【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发


    sgGoogleTranslate源码

    1. <template>
    2. <div :id="$options.name"> div>
    3. template>
    4. <script>
    5. export default {
    6. name: "sgGoogleTranslate",
    7. props: ["languages", "currentLanguage"],
    8. data() {
    9. return {
    10. //语言列表,遵循 ISO 639-1 标准,俩位的code(参考:https://zh.wikipedia.org/wiki/ISO_639-1)
    11. defaultLanguages: [
    12. { code: "en", name: "English", cname: "英语", ename: "English", },
    13. { code: "af", name: "Afrikaans", cname: "南非语", ename: "Afrikaans", },
    14. { code: "sq", name: "Gjuha shqipe", cname: "阿尔巴尼亚语", ename: "Albanian", },
    15. { code: "ar", name: "العربية", cname: "阿拉伯语", ename: "Arabic", },
    16. { code: "hy", name: "Հայերեն", cname: "亚美尼亚语", ename: "Armenian", },
    17. { code: "az", name: "Азәрбајҹан дили", cname: "阿塞拜疆语", ename: "Azerbaijani", },
    18. { code: "eu", name: "Euskara", cname: "巴斯克语", ename: "Basque", },
    19. { code: "be", name: "беларуская мова", cname: "白俄罗斯语", ename: "Belarusian", },
    20. { code: "bg", name: "български език", cname: "保加利亚语", ename: "Bulgarian", },
    21. { code: "ca", name: "Català", cname: "加泰罗尼亚语", ename: "Catalan", },
    22. { code: "zh-CN", name: "Chinese (Simplified)", cname: "中文 (简体)", ename: "Chinese (Simplified)", },
    23. { code: "zh-TW", name: "Chinese (Traditional)", cname: "中文 (繁体)", ename: "Chinese (Traditional)", },
    24. { code: "hr", name: "Српскохрватски језик", cname: "克罗地亚语", ename: "Croatian", },
    25. { code: "cs", name: "čeština", cname: "捷克语", ename: "Czech", },
    26. { code: "da", name: "Danmark", cname: "丹麦语", ename: "Danish", },
    27. { code: "nl", name: "Nederlands", cname: "荷兰语", ename: "Dutch", },
    28. { code: "et", name: "eesti keel", cname: "爱沙尼亚语", ename: "Estonian", },
    29. { code: "tl", name: "Filipino", cname: "菲律宾语", ename: "Filipino", },
    30. { code: "fi", name: "Finnish", cname: "芬兰语", ename: "Finnish", },
    31. { code: "fr", name: "Français", cname: "法语", ename: "French", },
    32. { code: "de", name: "Deutsch", cname: "德语", ename: "German", },
    33. { code: "el", name: "Ελληνικά", cname: "希腊语", ename: "Greek", },
    34. { code: "hu", name: "magyar", cname: "匈牙利语", ename: "Hungarian", },
    35. { code: "id", name: "Indonesia", cname: "印度尼西亚语", ename: "Indonesian", },
    36. { code: "ga", name: "Irish", cname: "爱尔兰语", ename: "Irish", },
    37. { code: "it", name: "Italiano", cname: "意大利语", ename: "Italian", },
    38. { code: "ja", name: "にほんご", cname: "日语", ename: "Japanese", },
    39. { code: "ko", name: "한국어", cname: "韩语", ename: "Korean", },
    40. { code: "lt", name: "lietuvių kalba", cname: "立陶宛语", ename: "Lithuanian", },
    41. { code: "ms", name: "Malay", cname: "马来西亚语", ename: "Malay", },
    42. { code: "no", name: "norsk", cname: "挪威语", ename: "Norwegian", },
    43. { code: "pl", name: "Polski", cname: "波兰语", ename: "Polish", },
    44. { code: "pt", name: "Português", cname: "葡萄牙语", ename: "Portuguese", },
    45. { code: "ro", name: "limba română", cname: "罗马尼亚语", ename: "Romanian", },
    46. { code: "ru", name: "Русский", cname: "俄语", ename: "Russian", },
    47. { code: "es", name: "Español", cname: "西班牙语", ename: "Spanish", },
    48. { code: "sv", name: "Swedish", cname: "瑞典语", ename: "Swedish", },
    49. { code: "th", name: "ภาษาไทย", cname: "泰语", ename: "Thai", },
    50. { code: "tr", name: "Turkish", cname: "土耳其语", ename: "Turkish", },
    51. { code: "uk", name: "українська мова", cname: "乌克兰语", ename: "Ukrainian", },
    52. ],
    53. };
    54. },
    55. mounted() {
    56. //google翻译插件初始化
    57. window[this.$options.name] = () => {
    58. new window.google.translate.TranslateElement(
    59. {
    60. pageLanguage: this.currentLanguage || "auto",//默认页面源语言code:zh-CN 简体中文
    61. includedLanguages: (this.languages || this.defaultLanguages).map(v => v.code).join(','),
    62. autoDisplay: true,
    63. layout: google.translate.TranslateElement.InlineLayout.horizontal
    64. },
    65. this.$options.name
    66. );
    67. };
    68. this.loadJS(`https://translate.google.com/translate_a/element.js?cb=${this.$options.name}`);//如果该网址无法在国内访问,将无法使用google翻译插件
    69. },
    70. methods: {
    71. loadJS(url, callback) {
    72. let script = document.createElement("script");
    73. script.type = "text/javascript";
    74. script.src = url;
    75. script.onload = script.onreadystatechange = function () {
    76. if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
    77. callback && callback();
    78. script.onload = script.onreadystatechange = null;
    79. }
    80. };
    81. document.querySelector("html").appendChild(script);
    82. },
    83. },
    84. };
    85. script>
    86. <style lang="scss" >
    87. body {
    88. top: revert !important;
    89. }
    90. .skiptranslate iframe {
    91. display: none;
    92. }
    93. .goog-te-gadget {
    94. height: 50px;
    95. overflow: hidden;
    96. pointer-events: none;
    97. .goog-te-combo {
    98. pointer-events: auto;
    99. box-sizing: border-box;
    100. padding: 10px;
    101. background-color: white;
    102. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
    103. border-radius: 4px;
    104. margin-bottom: 10px !important; //把“由Google强力驱动”几个字隐藏掉
    105. }
    106. }
    107. style>

    用例

    1. <template>
    2. <div>
    3. <sgGoogleTranslate />
    4. <br><br>
    5. <p> 我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。 p>
    6. <br>
    7. <p> 我想我是太过依赖,在挂电话的刚才,坚持学单纯的小孩,静静看守这份爱,知道不能太依赖,怕你会把我宠坏,你的香味一直徘徊,我舍不得离开。 p>
    8. <br>
    9. <p> 缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。 p>
    10. div>
    11. template>
    12. <script>
    13. import sgGoogleTranslate from "./sgGoogleTranslate";
    14. export default { components: { sgGoogleTranslate, }, };
    15. script>

    最原始的多国语言方法一分钟上手Vue VueI18n Internationalization(i18n)多国语言系统开发、国际化、中英文语言切换!_你挚爱的强哥的博客-CSDN博客这里以Vue2为例子。https://blog.csdn.net/qq_37860634/article/details/132250859

  • 相关阅读:
    【信息系统项目管理师】 学习笔记 第1章 信息化发展
    策略验证_指标买点分析技法_运用KDJ随机指标选择买点
    Reactor 之 手把手教你 Spring Boot 整合 Reactor
    视频号视频下载教程,为视频博主提供的PC电脑版下载方法
    Linux设备树详细学习笔记
    天天写SQL,这些神奇的特性你知道吗?
    趣学python编程 (二、计算机硬件和用途介绍)
    深入了解百度爬虫工作原理
    微信小程序(基本结构)
    SpringCloud微服务电商系统在Kubernetes集群中上线详细教程
  • 原文地址:https://blog.csdn.net/qq_37860634/article/details/132920063