`
龙晓舟
  • 浏览: 164342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Abd288eb-a9b2-3549-ba16-f04b1b34dec3
创业,不能兼职
浏览量:24958
文章分类
社区版块
存档分类
最新评论

创业,不能兼职(41)--- java设计之多语言支持,不仅解决静态,而且解决动态

阅读更多
早上和后台小伙子交流语言问题时,他提到2个结论.1 双语言还好办点,多语言困难.2. 可以静态的,不可以动态的.

给了我一个链接,说多语言,是要到property里的那样文件,去把一些 比如 用户密码错误 翻译为 user idpasswordiserror,然后替换如何如何. 说,这个,只能是把静态的语言文字部分翻译,动态的就不行的,比如,写到数据库里,从数据库里读出的就不行.比如用户输入的就不行. 那个,我觉得也是,用户输入什么文字,自然是什么.

可是,还是有问题,就是用户输入的有些,我是想转换的,就是我们自己在数据库里是先要做处理,再呈现的. 比如,你 中国人,选择中文,输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?

还有,我又希望,中国人,地址里,也能输入 Paris这样的,最后,所有,巴黎,paris,我们都会给你算一个地方,不会算2个地方.这又算什么?

然后,还有比如,有些地名,有英语名字,中文名字,还有本国名字,我也希望有.比如,都指向同一个地方.这和我说的支持多语言的,有关系还是没关系? 比如,München, 慕尼黑,Munich,这三个,分别是母语,中文,英语的同一个地方. 这个我们之前有讨论,但是没觉得和这个支持多语言有什么关系. 到底有关还是没关?

不过,实际在多语言里,我认为是这样的,就是一个地名,都有 你选择的语言的,就是1\用户母语的名称,在我们,就是中文, 在别人,可能就是法语,日语等等.2\英语地名,3\该国本地语言的地名. 多语言时,变的是第一个, 后面2个是固定的.

不过,怎么建立和得到这些数据,有些我没想明白.


刚刚,看到另外一篇文章, 这文章,至少是解决了,我们后台小伙子认为的,只能解决静态,不能动态的问题.http://java.chinaitlab.com/model/3293.html

最核心我看的懂的概念大致如下:

静态文字和动态文字采取不同的解决方案:
  把所有的网页交给翻译公司对上面的静态文字进行翻译, 而网页上面的动态内容则需要程序解决。
  
需要解决的动态文字的“翻译”问题,实际上是将数据库中的一些静态或者半静态的数据进行“翻译”。下面就是一个典型的数据表:
   
  代码清单1、为英文用户的准备的货币列表。
  货币代码永远是上面所看到的英文代码,但是货币名称应当根据用户所选择的语言不同而不同。比如对中文读者就应当翻译成为下面的表:
   
  代码清单2、为中文用户准备的货币列表。
  这样的表会在网页上作为下拉菜单出现,用户看到的是货币名称,而系统内部使用的是货币代码。
  国际化解决方案
  这样的问题就是国际化的问题,所谓国际化就是Internationalization,简称作i18n(请参见本章最后的问答题)。
  设计师所采取的实际方案是分层方案,也就是MVC模式。MVC模式将系统分为三个层次,也就是模型(Model)、视图(View)、控制器(Control)三个部份。国际化是视图部份的问题,因此应当在视图部份得到解决。
   
  图1、MVC模式的示意图。
  换言之,系统的内核可以是纯英文的;在内核外部增加一个壳层负责语言翻译工作。请见下面的概念图:
   
  图2、英文内核和翻译壳层的概念图。
  所谓内核就是系统的模型,而翻译壳层便是视图的一部份。对多语言的支持属于视图功能,因此不应当在内核解决,而应当在视图解决。这就是设计师们达成的总体方案。
  多态模式 多态模式的特点
  所谓的多态模式(Multiton Pattern),实际上就是单态模式的自然推广。作为对象的创建模式,多态模式或多态类有以下的特点:
  多态类可有多个实例; 多态类必须自己创建、管理自己的实例,并向外界提供自己的实例。
  单态类一般情况下最多只可以有一个实例,请见下面的结构图:




其他的部分我看不太懂了,不知道,我们现在是不是所谓MVC.

现在程序员在干活,我决定不随意打扰他.每天,用一个时间段讨论.

很多时间段独自干活. 提高效率. 不然,就会因为不相干的讨论,分散手头主要的东西.一天下来,可能又没解决任何问题.


分享到:
评论
12 楼 龙晓舟 2011-09-27  
如何实现网站多语言版本
随着国际化的深入,越来越多的网站提供多语言版本给不同国家的用户。最近做的一个项目也涉及到这块,顺便做个总结。
一、通常实现方法有两种:
1、采用多语言模板,通过程序渲染不同语言版本的模板。
比如:
简体版: 文件名.zh_CN.后缀
繁体版: 文件名.zh_TW.后缀
英文版: 文件名.en_US后缀
优点:
(1) 不同语言版本有各自的模板,维护量大,但维护简单。甚至不同版本的模板在显示风格上都可以不同。
缺点:
(1) 同一商业逻辑的页面,需要维护多套模板,有重复工作。
2、采用同一模板,利用ResourceBundle配置多语言resource文件,实现网页上不同语言版本的显示。
优点:
(1) 同一商业逻辑的页面,只需要维护一套模板。
缺点:
(2) 模板的设计难度比较大,需要适应不同语言版本的需求。这个我们在实际工作中遇到过,有些显示英文字符没有问题的样式,在显示中文会出现问题,单个模板的维护难度比较大些。
二、我们先了解一下基础知识,这些会在实际开发中会用到。
1、 java.util.Locale
System.out.println(Locale.getDefault().toString());
输出:zh_CN 表示语言_国家/地区
常用的Locale为
Locale.TRADITIONAL_CHINESE   zh_TW
Locale. SIMPLIFIED_CHINESE     zh_CN
Locale.US                       en_US
2、 字符集
我们常用的字符集:GBK, UTF-8, ISO8859-1。
三、网页中如何实现多语言版本显示?
1、 我们将网页的输出字符集采用UTF-8,即返回网页的http头为:
Content-Type: text/html;charset=UTF-8
这个就需要我们在返回网页内容时候,调用以下语句设置网页的字符集。
servletResponse.setCharacterEncoding("UTF-8")
2、 网页GET/POST提交的时候采用UTF-8的方式。
(1) GET方式:
URL中的非ASCII采用UTF-8的方式编码,比如
http://www.test.com/中国.html?keywords=中国
页面显示的链接为:
http://www.test.com/E4%B8%AD%E5%9B%BD.html?keywords=E4%B8%AD%E5%9B%BD
(2) POST方式:
如果网页的输出字符集为UTF-8,则POST提交的时候表单的数据也是采用UTF-8编码的。
3、 在服务器端我们要设置服务器的字符集。
如果是jboss服务器的话,则需设置tomcat的server.xml
${jboss-home}/server/default/deploy/jbossweb-tomcat55.sar/server.xml
<Connector port="80" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
4、 在应用程序,在调用HttpServletRequest.getParameters(),需要调用HttpServletRequest.setCharacterEncoding("UTF-8");
5、 采用第一种方案:采用多语言模板。我们可以定义:
Index_zh_CN.html
Index_zh_TW.html
Index_en_US.html
我们可以通过不同的URL,或者用户的IP等信息,选择不同的模板进行渲染。
6、 采用第二种方案:采用单一模板。通过不同语言版本的配置文件获得不同的多语言版本字符串。
java.util.ResourceBundle提供的properties文件本身并很好的支持非ASCII的字符集,我们建议用户采用XMLResourceBundle,采用xml文件的方式定义配置文件。Xml文件本身可以很好的描述自己的编码格式。
<?xml version="1.0" encoding="UTF-8"?>。
11 楼 龙晓舟 2011-09-27  
http://blog.csdn.net/menban/article/details/2237166

小兄弟昨天发我的链接

现在en-US.properties

10 楼 龙晓舟 2011-08-18  
nkshan 写道
地址输入框就相当于搜索框啊,实际上你这里已经不是单纯的搜索地址了,而是输入和这个东西相关的一个词(tag)就能找出来。

你这里面输入的可能性是随时可能变得,比如这个地方又出来一个新称号“花都”,你希望不希望用户输入后就找出来?是不是要加一个tag?

或者可以叫“关键词”


不是tag,是 地址输入框,也是以后查询各类数据都要用的.比如,用户a要去巴黎,找家旅馆, 另外一用户b住过一家,他输入的是巴黎 ***hotel 那城镇的名字 a要是输入paris,就可能找不到这家旅馆了,要是我自己的数据库里有对应的,就无论你输入哪个名字都找到了,不是tag





不是不是,是一个地址库,不是一个地址后面加一个tag
9 楼 nkshan 2011-08-18  
地址输入框就相当于搜索框啊,实际上你这里已经不是单纯的搜索地址了,而是输入和这个东西相关的一个词(tag)就能找出来。

你这里面输入的可能性是随时可能变得,比如这个地方又出来一个新称号“花都”,你希望不希望用户输入后就找出来?是不是要加一个tag?

或者可以叫“关键词”


不是tag,是 地址输入框,也是以后查询各类数据都要用的.比如,用户a要去巴黎,找家旅馆, 另外一用户b住过一家,他输入的是巴黎 ***hotel 那城镇的名字 a要是输入paris,就可能找不到这家旅馆了,要是我自己的数据库里有对应的,就无论你输入哪个名字都找到了,不是tag


8 楼 龙晓舟 2011-08-18  
nkhanxh 写道
你这个似乎变成另外一个问题了,就是所谓的tag。
你看javaeye里面,每篇文章可以标上tag。然后搜索的时候以此为关键字。

只不过你这个tag数目多了点,不是固定的个数。



龙晓舟 写道
nkhanxh 写道
"输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?"

那就把所有的文字中的巴黎都弄成“该国文字,paris”

另外你说的这个已经脱离了普通的多国文字了,实际上是更广泛的概念了。

但是我觉得这个是不是第一步可以不支持。

你需要把每个需求,都写上优先级,注意,是以数字形式,而不是以“高中低”
这样的形式。

然后以3周为单位,来规划开发进度。把最高优先级的需求进行技术拆分,估计需要工作量。


然后在这3周范围内放入能完成的工作量,然后开始工作。

这样的好处是计划性和时效性能兼顾。


是的,我现在是用mindmanager 画图,自己标记了优先级,用1.23等数字标的. 不过,没和他们交流.但大致现在要做的事情,我还是分了一下优先级的.这个,语言,我也确实没有要求真的现在做,只是提了一句.之前的程序员, 我问能不能变为英语版的时候,他说非常困难,基本就不可能,而我之前是一开始就告诉他,以后要,如果,只是工作时间和工作量的问题,可以的,如果是结构上不支持,就不行.所以,我这次,好奇地又问了一下.毕竟这个, 到后面是放注册页上的,所以,就在做这个页面时问了一下.

你说的,把所有文字中的巴黎都弄成 该国文字,paris,我还没想过呢. 主要的是,那样的数据,要慢慢积累,是吧,只能先建一个库,留有这样的空,等用户或自己慢慢添加.现在没有现成的完整的各个地名的几种语言的地址数据库. 得用户输入时,去谷歌数据库里抓,不过,每次也是抓的一种语言的,可能后面还得有个翻译,然后匹配的过程.不然,一个用户输入 慕尼黑,另外一个用户输入 munich, 把它当2个地点也不行.我想的是无论输入和搜索哪一种,用这2种方式输入的相关信息都是指向同一个地点的. .

我还没想很清楚.



不是tag,是 地址输入框,也是以后查询各类数据都要用的.比如,用户a要去巴黎,找家旅馆, 另外一用户b住过一家,他输入的是巴黎 ***hotel 那城镇的名字 a要是输入paris,就可能找不到这家旅馆了,要是我自己的数据库里有对应的,就无论你输入哪个名字都找到了,不是tag

7 楼 nkhanxh 2011-08-17  
你这个似乎变成另外一个问题了,就是所谓的tag。
你看javaeye里面,每篇文章可以标上tag。然后搜索的时候以此为关键字。

只不过你这个tag数目多了点,不是固定的个数。



龙晓舟 写道
nkhanxh 写道
"输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?"

那就把所有的文字中的巴黎都弄成“该国文字,paris”

另外你说的这个已经脱离了普通的多国文字了,实际上是更广泛的概念了。

但是我觉得这个是不是第一步可以不支持。

你需要把每个需求,都写上优先级,注意,是以数字形式,而不是以“高中低”
这样的形式。

然后以3周为单位,来规划开发进度。把最高优先级的需求进行技术拆分,估计需要工作量。


然后在这3周范围内放入能完成的工作量,然后开始工作。

这样的好处是计划性和时效性能兼顾。


是的,我现在是用mindmanager 画图,自己标记了优先级,用1.23等数字标的. 不过,没和他们交流.但大致现在要做的事情,我还是分了一下优先级的.这个,语言,我也确实没有要求真的现在做,只是提了一句.之前的程序员, 我问能不能变为英语版的时候,他说非常困难,基本就不可能,而我之前是一开始就告诉他,以后要,如果,只是工作时间和工作量的问题,可以的,如果是结构上不支持,就不行.所以,我这次,好奇地又问了一下.毕竟这个, 到后面是放注册页上的,所以,就在做这个页面时问了一下.

你说的,把所有文字中的巴黎都弄成 该国文字,paris,我还没想过呢. 主要的是,那样的数据,要慢慢积累,是吧,只能先建一个库,留有这样的空,等用户或自己慢慢添加.现在没有现成的完整的各个地名的几种语言的地址数据库. 得用户输入时,去谷歌数据库里抓,不过,每次也是抓的一种语言的,可能后面还得有个翻译,然后匹配的过程.不然,一个用户输入 慕尼黑,另外一个用户输入 munich, 把它当2个地点也不行.我想的是无论输入和搜索哪一种,用这2种方式输入的相关信息都是指向同一个地点的. .

我还没想很清楚.

6 楼 龙晓舟 2011-08-17  
nkhanxh 写道
"输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?"

那就把所有的文字中的巴黎都弄成“该国文字,paris”

另外你说的这个已经脱离了普通的多国文字了,实际上是更广泛的概念了。

但是我觉得这个是不是第一步可以不支持。

你需要把每个需求,都写上优先级,注意,是以数字形式,而不是以“高中低”
这样的形式。

然后以3周为单位,来规划开发进度。把最高优先级的需求进行技术拆分,估计需要工作量。


然后在这3周范围内放入能完成的工作量,然后开始工作。

这样的好处是计划性和时效性能兼顾。


是的,我现在是用mindmanager 画图,自己标记了优先级,用1.23等数字标的. 不过,没和他们交流.但大致现在要做的事情,我还是分了一下优先级的.这个,语言,我也确实没有要求真的现在做,只是提了一句.之前的程序员, 我问能不能变为英语版的时候,他说非常困难,基本就不可能,而我之前是一开始就告诉他,以后要,如果,只是工作时间和工作量的问题,可以的,如果是结构上不支持,就不行.所以,我这次,好奇地又问了一下.毕竟这个, 到后面是放注册页上的,所以,就在做这个页面时问了一下.

你说的,把所有文字中的巴黎都弄成 该国文字,paris,我还没想过呢. 主要的是,那样的数据,要慢慢积累,是吧,只能先建一个库,留有这样的空,等用户或自己慢慢添加.现在没有现成的完整的各个地名的几种语言的地址数据库. 得用户输入时,去谷歌数据库里抓,不过,每次也是抓的一种语言的,可能后面还得有个翻译,然后匹配的过程.不然,一个用户输入 慕尼黑,另外一个用户输入 munich, 把它当2个地点也不行.我想的是无论输入和搜索哪一种,用这2种方式输入的相关信息都是指向同一个地点的. .

我还没想很清楚.
5 楼 龙晓舟 2011-08-17  
fugary 写道
看完了,整体来说想法不错,也比较有冲劲,努力吧,没有做不成的,就怕不能坚持

不过总体来说,有几点看法【从程序猿角度】
1、个人认为前期需求和设计很重要,整体把握好方向,一来简化开发,二来方便后期维护。
2、还是应该有个技术扎实的技术人员来牵头,基础框架的搭建和设计需要做好。
3、要做的东西要明确,最终用户群是些什么人,有什么样的知识,用户体验比较重要。
4、业务逻辑和流程、模块划分,功能划分,各个功能模块的主次关系,重要的需要先做,不重要的上线后开始做也没关系,这些最好先定下来,讨论分析讨论总结,不要急着开发,整体说来开发其实占整个系统很小一部分。

——————----


真诚的谢谢哈.
1\是的,希望这次来的后台能把框架和设计做好.
2\要做的东西目前阶段的还是明确的.是,整体看,开发占的比例不大,可是,唉,对我,现在是开发比例占的最大,因为,其他的,我都是琢磨很久,甚至远远超过了现在我打算做的:)
4 楼 nkhanxh 2011-08-17  
"输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?"

那就把所有的文字中的巴黎都弄成“该国文字,paris”

另外你说的这个已经脱离了普通的多国文字了,实际上是更广泛的概念了。

但是我觉得这个是不是第一步可以不支持。

你需要把每个需求,都写上优先级,注意,是以数字形式,而不是以“高中低”
这样的形式。

然后以3周为单位,来规划开发进度。把最高优先级的需求进行技术拆分,估计需要工作量。


然后在这3周范围内放入能完成的工作量,然后开始工作。

这样的好处是计划性和时效性能兼顾。
3 楼 龙晓舟 2011-08-17  
tommywdl 写道
几乎没发过贴,今天把楼主的该系列帖一口气看完了 很钦佩楼主创业精神,!up


客气,谢谢) 可惜,仅仅有精神没用,有能力更重要.
2 楼 fugary 2011-08-17  
看完了,整体来说想法不错,也比较有冲劲,努力吧,没有做不成的,就怕不能坚持

不过总体来说,有几点看法【从程序猿角度】
1、个人认为前期需求和设计很重要,整体把握好方向,一来简化开发,二来方便后期维护。
2、还是应该有个技术扎实的技术人员来牵头,基础框架的搭建和设计需要做好。
3、要做的东西要明确,最终用户群是些什么人,有什么样的知识,用户体验比较重要。
4、业务逻辑和流程、模块划分,功能划分,各个功能模块的主次关系,重要的需要先做,不重要的上线后开始做也没关系,这些最好先定下来,讨论分析讨论总结,不要急着开发,整体说来开发其实占整个系统很小一部分。

——————----
1 楼 tommywdl 2011-08-17  
几乎没发过贴,今天把楼主的该系列帖一口气看完了 很钦佩楼主创业精神,!up

相关推荐

    白色大气风格的旅游酒店企业网站模板.zip

    白色大气风格的旅游酒店企业网站模板.zip

    python实现用户注册

    python实现用户注册

    【图像压缩】基于matlab GUI Haar小波变换图像压缩(含PSNR)【含Matlab源码 9979期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    (177354822)java小鸟游戏.zip

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    VB+access学生管理系统(论文+系统)(2024am).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    数学计算中的平方表与圆周率π的应用

    内容概要:文档名为《平方表,派表集合.docx》,主要内容是1至1000的平方值以及1至1000与π的乘积结果。每个数字从1开始,逐步增加至1000,对应地计算了平方值和乘以π后的值。所有计算均通过Python脚本完成,并在文档中列出了详细的计算结果。 适合人群:需要进行数学计算或程序验证的学生、教师和研究人员。 使用场景及目标:用于快速查找特定数字的平方值或其与π的乘积,适用于教学、科研及程序测试等场景。 阅读建议:可以直接查阅所需的具体数值,无需从头到尾逐行阅读。建议在使用时配合相应的计算工具,以验证和拓展数据的应用范围。

    VB+SQL光盘信息管理系统(源代码+系统+答辩PPT)(20244m).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    白色大气风格的健身私人教练模板下载.zip

    白色大气风格的健身私人教练模板下载.zip

    白色简洁风的商务网站模板下载.zip

    白色简洁风的商务网站模板下载.zip

    白色大气风格的前端设计案例展示模板.zip

    白色大气风格的前端设计案例展示模板.zip

    圣诞树项目中的硬件和MATLAB实现指南

    内容概要:本文介绍了两个有趣的圣诞树项目方向:一是使用Arduino或Raspberry Pi开发可编程的圣诞树灯光控制系统;二是基于MATLAB开发一个圣诞树模拟器。前者通过硬件连接、编写Arduino/Raspberry Pi程序、MATLAB控制程序来实现LED灯带的闪烁;后者则通过创建圣诞树图形、添加动画效果、用户交互功能来实现虚拟的圣诞树效果。 适合人群:具备基本电子工程和编程基础的爱好者和学生。 使用场景及目标:①通过硬件和MATLAB的结合,实现实际的圣诞树灯光控制系统;②通过MATLAB模拟器,实现一个有趣的圣诞树动画展示。 阅读建议:读者可以根据自己的兴趣选择合适的项目方向,并按照步骤进行动手实践,加深对硬件编程和MATLAB编程的理解。

    白色扁平风格的温室大棚公司企业网站源码下载.zip

    白色扁平风格的温室大棚公司企业网站源码下载.zip

    Navicat.zip

    Navicat.zip

    Scikit-learn库中主成分分析(PCA)技术的Python实现教程

    内容概要:本文详细介绍了主成分分析(PCA)技术的原理及其在Scikit-learn库中的Python实现。首先讲解了PCA的基本概念和作用,接着通过具体示例展示了如何使用Scikit-learn进行PCA降维。内容涵盖了数据准备、模型训练、数据降维、逆转换数据等步骤,并通过可视化和实际应用案例展示了PCA的效果。最后讨论了PCA的局限性和参数调整方法。 适合人群:数据科学家、机器学习工程师、数据分析从业者及科研人员。 使用场景及目标:适用于高维数据处理,特别是在需要降维以简化数据结构、提高模型性能的场景中。具体目标包括减少计算复杂度、提高数据可视化效果和改进模型训练速度。 其他说明:本文不仅提供了详细的代码示例,还讨论了PCA在手写数字识别和机器学习模型中的应用。通过比较原始数据和降维后数据的模型性能,读者可以更好地理解PCA的影响。

    (175846434)目标检测-将VOC格式的数据集一键转化为COCO和YOLO格式

    VOC格式的数据集转COCO格式数据集 VOC格式的数据集转YOLO格式数据集。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    数字信号处理课程设计.doc

    数字信号处理课程设计.doc

    白色扁平化风格的灯饰灯具销售企业网站模板.zip

    白色扁平化风格的灯饰灯具销售企业网站模板.zip

    华豫佰佳组合促销视图.sql

    华豫佰佳组合促销视图.sql

    白色大气风格的商务团队公司模板下载.zip

    白色大气风格的商务团队公司模板下载.zip

    白色大气风格的VPS销售网站模板.zip

    白色大气风格的VPS销售网站模板.zip

Global site tag (gtag.js) - Google Analytics