当前位置: 首页>>代码示例>>PHP>>正文


PHP Translations::toPoString方法代码示例

本文整理汇总了PHP中Gettext\Translations::toPoString方法的典型用法代码示例。如果您正苦于以下问题:PHP Translations::toPoString方法的具体用法?PHP Translations::toPoString怎么用?PHP Translations::toPoString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Gettext\Translations的用法示例。


在下文中一共展示了Translations::toPoString方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: main

 /**
  * main
  *
  */
 public function main()
 {
     $schemaPo = APP . 'Locale' . DS . 'schema.pot';
     $conn = ConnectionManager::get('default');
     $collection = $conn->schemaCollection();
     $translations = new Translations();
     $tables = $collection->listTables();
     foreach ($tables as $table) {
         $translations->insert($table, Inflector::humanize(Inflector::underscore($table)));
         $translations->insert($table, Inflector::humanize(Inflector::underscore(Inflector::singularize($table))));
         $columns = $collection->describe($table)->columns();
         foreach ($columns as $column) {
             $c = $collection->describe($table)->column($column);
             $comment = $c['comment'];
             $t = new Translation($table . '.' . $column, Inflector::humanize(Inflector::underscore($column)));
             $translations[] = $t;
             $t->setTranslation($comment);
             $t = new Translation($table . '.' . $column, Inflector::humanize(Inflector::underscore(Inflector::singularize($table))) . ' ' . Inflector::humanize(Inflector::underscore($column)));
             $translations[] = $t;
             $t->setTranslation($comment);
         }
     }
     $poString = $translations->toPoString();
     $caked = preg_replace('/msgctxt "([^"]+)"/i', '#: \\1', $poString);
     $this->createFile($schemaPo, $caked);
 }
开发者ID:k1low,项目名称:po,代码行数:30,代码来源:SchemaTask.php

示例2: execute

 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getContainer();
     $filesystem = new Filesystem();
     $locator = $container->get("agit.common.filecollector");
     $bundles = $container->getParameter("kernel.bundles");
     $catalogPath = $container->getParameter("kernel.root_dir") . "/{$this->catalogSubdir}";
     $this->getContainer()->get("event_dispatcher")->dispatch("agit.intl.global.translations", new TranslationsEvent($this));
     foreach ($container->getParameter("agit.intl.locales") as $locale) {
         $catalog = new Translations();
         $messagesPath = "{$catalogPath}/{$locale}/LC_MESSAGES";
         $catalogFile = "{$messagesPath}/agit.po";
         $oldCatalog = $filesystem->exists($catalogFile) ? Translations::fromPoFile($catalogFile) : new Translations();
         foreach ($oldCatalog as $translation) {
             $translation->deleteReferences();
         }
         $catalog->mergeWith($oldCatalog, 0);
         foreach ($bundles as $alias => $namespace) {
             $bundlePath = $locator->resolve($alias);
             $bundleCatalogFile = "{$bundlePath}/{$this->catalogSubdir}/bundle.{$locale}.po";
             $bundleCatalog = $filesystem->exists($bundleCatalogFile) ? Translations::fromPoFile($bundleCatalogFile) : new Translations();
             $catalog->mergeWith($bundleCatalog, Merge::ADD);
         }
         if (isset($this->extraTranslations[$locale])) {
             foreach ($this->extraTranslations[$locale] as $translation) {
                 $catalog[] = $translation;
             }
         }
         // NOTE: we delete all headers and only set language in order to avoid garbage commits
         $catalog->deleteHeaders();
         $catalog->setLanguage($locale);
         $catalog->setHeader("Content-Type", "text/plain; charset=UTF-8");
         $filesystem->dumpFile($catalogFile, $catalog->toPoString());
         $filesystem->dumpFile("{$messagesPath}/agit.mo", $catalog->toMoString());
     }
 }
开发者ID:agitation,项目名称:intl-bundle,代码行数:36,代码来源:GlobalCatalogCommand.php

示例3: execute

 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getContainer();
     $filesystem = new Filesystem();
     $bundleAlias = $input->getArgument("bundle");
     $bundlePath = $container->get("agit.common.filecollector")->resolve($bundleAlias);
     $defaultLocale = $container->get("agit.intl.locale")->getDefaultLocale();
     $locales = $input->getArgument("locales") ? array_map("trim", explode(",", $input->getArgument("locales"))) : $container->getParameter("agit.intl.locales");
     $globalCatalogPath = $container->getParameter("kernel.root_dir") . "/{$this->catalogSubdir}";
     $this->cacheBasePath = sprintf("%s/agit.intl.temp/%s", sys_get_temp_dir(), $bundleAlias);
     $filesystem->mkdir($this->cacheBasePath);
     $finder = (new Finder())->in("{$bundlePath}")->name("*\\.php")->name("*\\.js")->notPath("/test.*/i")->notPath("public/js/ext");
     $files = [];
     foreach ($finder as $file) {
         $filePath = $file->getRealpath();
         $alias = str_replace($bundlePath, "@{$bundleAlias}/", $filePath);
         $files[$filePath] = $alias;
     }
     $this->getContainer()->get("event_dispatcher")->dispatch("agit.intl.bundle.files", new BundleTranslationFilesEvent($this, $bundleAlias, $this->cacheBasePath));
     $this->extraTranslations = new Translations();
     $this->getContainer()->get("event_dispatcher")->dispatch("agit.intl.bundle.translations", new BundleTranslationsEvent($this, $bundleAlias));
     $files += $this->extraSourceFiles;
     $frontendFiles = array_filter(array_keys($files), function ($file) {
         return preg_match("|\\.js\$|", $file);
     });
     $backendFiles = array_filter(array_keys($files), function ($file) {
         return !preg_match("|\\.js\$|", $file);
     });
     $frontendCatalogs = "";
     foreach ($locales as $locale) {
         if (!preg_match("|^[a-z]{2}_[A-Z]{2}|", $locale)) {
             throw new Exception("Invalid locale: {$locale}");
         }
         // we use the global catalog as source for already translated strings
         $globalCatalogFile = "{$globalCatalogPath}/{$locale}/LC_MESSAGES/agit.po";
         $globalCatalog = $filesystem->exists($globalCatalogFile) ? $this->deleteReferences(Translations::fromPoFile($globalCatalogFile)) : new Translations();
         $bundleCatalogFile = "{$bundlePath}/{$this->catalogSubdir}/bundle.{$locale}.po";
         $oldBundleCatalog = $filesystem->exists($bundleCatalogFile) ? $this->deleteReferences(Translations::fromPoFile($bundleCatalogFile)) : new Translations();
         // NOTE: we delete all headers and only set language, in order to avoid garbage commits
         $bundleCatalog = new Translations();
         $bundleCatalog->deleteHeaders();
         $bundleCatalog->setLanguage($locale);
         // first: only JS messages
         foreach ($frontendFiles as $file) {
             $bundleCatalog->addFromJsCodeFile($file, $this->extractorOptions);
         }
         $bundleCatalog->mergeWith($oldBundleCatalog, 0);
         $bundleCatalog->mergeWith($globalCatalog, 0);
         if ($bundleCatalog->count() && $locale !== $defaultLocale) {
             $transMap = [];
             foreach ($bundleCatalog as $entry) {
                 $msgid = ltrim($entry->getId(), "");
                 $msgstr = $entry->getTranslation();
                 $transMap[$msgid] = $entry->hasPlural() ? array_merge([$msgstr], $entry->getPluralTranslations()) : $msgstr;
             }
             $frontendCatalogs .= sprintf("ag.intl.register(\"%s\", %s);\n\n", $locale, json_encode($transMap, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
         }
         // now the same with all messages
         foreach ($backendFiles as $file) {
             $bundleCatalog->addFromPhpCodeFile($file, $this->extractorOptions);
         }
         $bundleCatalog->mergeWith($this->extraTranslations, Merge::ADD);
         $bundleCatalog->mergeWith($oldBundleCatalog, 0);
         $bundleCatalog->mergeWith($globalCatalog, 0);
         $catalog = $bundleCatalog->toPoString();
         $catalog = str_replace(array_keys($files), array_values($files), $catalog);
         if ($bundleCatalog->count()) {
             $filesystem->dumpFile("{$bundlePath}/{$this->catalogSubdir}/bundle.{$locale}.po", $catalog);
         }
     }
     if ($frontendCatalogs) {
         $filesystem->dumpFile("{$bundlePath}/{$this->frontendSubdir}/translations.js", $frontendCatalogs);
     }
     $filesystem->remove($this->cacheBasePath);
 }
开发者ID:agitation,项目名称:intl-bundle,代码行数:75,代码来源:BundleCatalogCommand.php


注:本文中的Gettext\Translations::toPoString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。