2012-01-04 83 views
1

在我的公司,我们有一个我们已经开发了5年以上的Web应用程序。我们仍然有一个包含PHP4的代码库,并且已经扩展了大量的PHP5。 LOC很大,约471k。它不基于框架,ORM等等。将遗留软件翻译成多种语言的最佳方法?

开始使用此项目的开发人员忽略了任何i18n和翻译。所有的语言文本都在软件中进行了硬编码。是的,我知道这很糟糕。 目前我们很好,因为我们只用软件的语言来销售这些软件,但我们也在考虑向国外扩张。

我正在努力处理翻译的最佳方法。 你们会如何处理这个问题?使用框架重写会更好,因为这可能会改善代码库并提供一个坚实的结构。或者你会只使用当前的软件并过滤出语言文本。

任何有关这个问题的提示和提示,赞赏!

+0

我想所有的答案都可以帮助我决定下一步该做什么。我还需要接受答案吗? – tomvo 2012-01-09 14:21:20

回答

0

这听起来像你有超过一个翻译项目在你之前。如果你想把它带到国外,你会重新设计至少部分的系统。

如果您的预算允许并且利益合理,您将需要退后一步并查看整体设计。保持你所能做到的,但不要害怕破坏,重新设计,替换和升级它的主要部分。

在过去的5年里发生了很大的变化,所以如果这是一个计划卖出多年的应用程序,它可能值得投资于重新设计。

+0

是的。我想我也会考虑devdRew的商业计划评论。此外,当您使用现代框架代替时,很难预见重写5年遗留产品的影响/时间。 – tomvo 2012-01-04 19:13:26

+0

分解成模块并评估每个模块。他们可能不需要重写。确定模块重写的成本/工作影响比为整个系统做更简单。 – 2012-01-05 18:31:26

0

这取决于优先事项是什么,至于你应该做什么。

如果主要关注的是语言翻译,那么您可以从取出硬编码字符串开始,使其可以国际化。

如果还有其他需要,比如想轻松支持不同的数据库,那么这将有助于确定是否有更好的方法。

2

我认为这两种变种都是可能的。你可以留下你的代码,或者重写。但正如你所知,重写是一个漫长的过程,尽管如此,你已经写了5年多了。

如果它仍然稳定,可以正常工作,并且不需要PHP4和其他“美味的东西”,那么您可以离开并仅检查所有硬编码文本。国际辅助人员非常容易制作。你所要做的仅此而已,那么:

  • 选择存储的文本和翻译
  • 缓存机制已经载入翻译
  • 类和辅助对国际化操作的适当方式。

如果你决定重写你的代码,你应该很好地分析你的商务计划。

+0

这也是对所有答案的评论,我想我的问题的一部分也是处理遗留问题时的挫败感,当你在开发者世界中看到许多新的伟大的东西出现在你身边时。它使你想把它扔掉,从头开始。 – tomvo 2012-01-04 19:10:32

+0

我们都遇到过这种情况,但您必须戴上您的商业伙伴帽子并说“对企业最好?”开发很少专注于使用我们可用的所有有光泽的新玩具。这是关于在一个有效的和成本效益的庄园完成工作。 – 2012-01-05 18:33:21

1

还有其他答案。翻译几乎相同的字符串非常昂贵。将其与语言数量相乘,人们意识到:通过共享相同的字符串和格式可以实现更好的国际化效率。

第一次重写模板部分,可能是有道理的。首先用手写,然后用你写的自动转换工具。它应该准备I18N。

+0

如果我说大概50%的PHP代码会生成HTML并且没有模板,该怎么办? – tomvo 2012-01-04 15:28:31

+0

我只是知道你的感受;遗留代码的丰富经验。但您至少必须将HTML转换为适合国际化的组件(如'

1

根据我的经验,单个项目有两个主要目标并不是一件好事 - 尤其是如果这些目标几乎完全与商业角度无关。我会有一个项目团队负责本地化(这可能不仅涉及翻译 - 不同国家有不同的法律要求,货币,支付提供商等),还有一个团队负责“改进代码库”。

我首先让本地化团队针对“您可以做的最简单的事情”制定出一个粗略的计划(和成本),即现在正在对网站进行改装的本地化功能。除非从业务角度来看,这笔费用是不可接受的 - 我会沿着这条路线走下去。

如果重构的业务案例尚未完成,我不会试图将它放到您的本地化项目中 - 我曾经见过类似的事情发生过,所有的开发人员都希望在酷重构东西,讨论各种框架的相对优点,以及使用哪种源代码控制系统,而企业关心的事物则推向未来;最终,企业主失去了对该项目的兴趣,并取消了它。

如果真的没有现实的方式来做本地化没有重构的努力,我仍然运行它与两个,分开的团队。本地化团队可以成为重构团队的主要需求所有者,他们确实需要一起工作 - 但通过保持两个项目独立运行,您可以避免重构90%的风险,但只有10%本地化。