代码之家  ›  专栏  ›  技术社区  ›  mauris

翻译算法

  •  1
  • mauris  · 技术社区  · 16 年前

    最近,我正在研究将PHP Web应用程序从一种语言转换为另一种语言的能力。好吧,我读到的大多数都涉及到语言文件,然后像这样显示所选的文件:

    En.Lang.PHP :

    <?php
    
    $_TEXT = array();
    $_TEXT['welcome'] = 'Welcome to My Application';
    
    ?>
    

    PHP语言 ://法语(我用google=x翻译的)

    <?php
    
    $_TEXT = array();
    $_TEXT['welcome'] = 'Bienvenue sur mon application Web';
    
    ?>
    

    我想问一下是否有比这更好的工作流程或算法?因为值可能被插入到文本中,等等——非常复杂的情况。有什么帮助吗?谢谢!

    还要注意:这个应用程序必须跨平台工作(或者我应该说独立于平台),因为从php 4.4.2中不需要额外的扩展。

    4 回复  |  直到 16 年前
        1
  •  3
  •   brianreavis    16 年前

    我建议使用 gettext 它会让你的生活简单得多…

    getText函数实现NLS (本机语言支持)API 可用于将您的 PHP应用程序。请看 系统的GetText文档 为了彻底解释这些 在_»功能或查看文档 http://www.gnu.org/software/gettext/manual/gettext.html .

        2
  •  0
  •   carl    16 年前

    签出PHP的getText: http://www.php.net/manual/en/intro.gettext.php

    如果您想滚动您自己的简单解决方案,我定义了一个函数,它采用本机字符串并执行转换+变量替换。_uuuu(两个下划线)的实际实现将取决于您,但通常$native是上面数组中的键,它使用sprintf替代。

        3
  •  0
  •   DarthVader    16 年前

    这实际上被称为国际化或本地化。

    如果您使用的是PHP,我建议您使用smarty。你可以用Java做同样的事情。Smarty有GetText插件。实际上,你甚至不必去搞gettext,你可以做得比这简单。
    http://www.smarty.net/

    或者您可以查看我看到的用于本地化的软件包的Pear库。

    http://pear.php.net/packages.php?catpid=28

        4
  •  0
  •   fvu    16 年前

    正如一些同行所建议的那样,gettext是一个很好的解决方案。它是 not php specific 很受欢迎 several tools to simplify translation 是可用的。

    最后但并非最不重要的是,将文本保存在源代码中的默认语言中要比记住文本的常量值容易得多。