是一个CSS和CSS的双语网站JS一个坏主意?

时间:2014-09-07 21:34:06

标签: javascript html css multilingual

我想建立一个大约5页的双语网站(一个投资组合类型的页面,有简短的描述)。

这是一个包含"关于我"的个人网页。页面,"链接"和"出版物"。绝对不需要超过两种语言,也不需要超过5页。该网站将托管在某些大学网站上,这意味着服务器的要求应该非常低。此外,它将由没有编程技能的人维护。

我通读this forum discussion,其中所有人都建议进行翻译"服务器端"而不是"客户端"。

我的网站非常小,甚至大多数内容都是单语。 "翻译"实际上只是用于以两种语言轻松导航材料。也就是说,只有菜单条目和简短描述将使用两种语言。

是一个简单的CSS + JS解决方案,通过JS隐藏和显示两种语言,真是个坏主意吗?

<ul id="menu">
  <li class="english">Events</li>
  <li class="portuguese">Eventos</li>
</ul>

我认为这种方法有一个主要的好处:即使只使用简单的文本编辑器,它也很容易维护。

4 个答案:

答案 0 :(得分:2)

它主要是一个补丁,最终不会扩展。你应该真正研究PHP gettext扩展。它的工作原理如下:你要翻译的每个字符串都是从php输出的。

答案 1 :(得分:1)

说到:[国际化 | 全球化 | 本地化]最受欢迎的标准之一是i18n,它从编码角度来创建资源字典&#34;。

不同的图书馆已实施标准,其原则涵盖从货币,日期和数字等转换到转化。

例如i18n-js建议使用此结构:

I18n.translations = {
            en: {
                hello: "Hello World!"               
            },
            "pt-BR": {
                hello: "Olá Mundo!"
            },
            "de": {
                hello: "Hallo Welt!"
            },
            "nb": {
                hello: "Hei Verden!"
            }
        };

   I18n.t("hello", {locale: "en"});    //returns  "Hello World!"
   I18n.t("hello", {locale: "pt-BR"}); //returns "Olá Mundo!"

还有一个JQuery plug-in也可以提供帮助:

$.i18n.load({ a_key: 'translated string %2$s - %1$s' });
$.i18n._('a_key', ['order', 'in'])); //returns 'translated string in - order'

要定义结构,建议首先选择基础框架(更符合您的需求),并遵循社区的最佳实践。这将使决策过程更加引导和支持社区的经验。

How to dynamically change language using jquery-i18n-properties and JavaScript?

Angular还实现了i18n并允许在运行时切换语言:

做类似的事情:

$translate.use('es'); 

http://www.ng-newsletter.com/posts/angular-translate.html

答案 2 :(得分:1)

只要它在语义上正确并且网站足够小以便能够管理,就不会有问题。

通过语义上的正确,我的意思是HTML文档是否有意义,如果你在它上面阅读它?如果您订购源代码,您希望如何获得双语文档,那么答案是肯定的。

我会使用lang属性而不是CSS类来决定要显示/隐藏的内容,例如:

<body class="english-site">
  <div lang="en"><p>English</p></div>
  <div lang="de"><p>German</p></div>  
</body>

body.english-site [lang]:not([lang=en]) {
  display: none;
}

http://codepen.io/penx/pen/uihyK

答案 3 :(得分:0)

如果您网站的语言要求永远不会超出您的描述,那么这不是一个糟糕的主意。

请记住:如果您想进一步完成翻译,那么您将不得不从头开始进行服务器端翻译。