本文整理汇总了PHP中JMS\TranslationBundle\Model\MessageCatalogue::getDomain方法的典型用法代码示例。如果您正苦于以下问题:PHP MessageCatalogue::getDomain方法的具体用法?PHP MessageCatalogue::getDomain怎么用?PHP MessageCatalogue::getDomain使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JMS\TranslationBundle\Model\MessageCatalogue
的用法示例。
在下文中一共展示了MessageCatalogue::getDomain方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: dump
public function dump(MessageCatalogue $catalogue, $domain = 'messages', $filePath = null)
{
$structure = $catalogue->getDomain($domain)->all();
if ($this->prettyPrint) {
$tmpStructure = array();
foreach ($structure as $id => $message) {
$pointer =& $tmpStructure;
$parts = explode('.', $id);
// this algorithm only works if the messages are alphabetically
// ordered, in particular it must be guaranteed that parent paths
// are before sub-paths, e.g.
// array_keys($structure) = array('foo.bar', 'foo.bar.baz')
// but NOT: array_keys($structure) = array('foo.bar.baz', 'foo.bar')
for ($i = 0, $c = count($parts); $i < $c; $i++) {
if ($i + 1 === $c) {
$pointer[$parts[$i]] = $message;
break;
}
if (!isset($pointer[$parts[$i]])) {
$pointer[$parts[$i]] = array();
}
if ($pointer[$parts[$i]] instanceof Message) {
$subPath = implode('.', array_slice($parts, $i));
$pointer[$subPath] = $message;
break;
}
$pointer =& $pointer[$parts[$i]];
}
}
$structure = $tmpStructure;
unset($tmpStructure);
}
return $this->dumpStructure($structure);
}
示例2: write
public function write(MessageCatalogue $catalogue, $domain, $filePath, $format)
{
$newCatalogue = new MessageCatalogue();
$newCatalogue->setLocale($catalogue->getLocale());
foreach (array_keys($catalogue->getDomains()) as $catalogueDomainString) {
if ($catalogue->getLocale() !== 'en' && $this->hasEnglishCatalogue($filePath)) {
$englishCatalogue = $this->loadEnglishCatalogue($filePath, $domain, $format);
}
$domainMessageCollection = $catalogue->getDomain($catalogueDomainString);
/** @var Message $message */
foreach ($domainMessageCollection->all() as $message) {
if ($message->getDomain() !== $domain) {
continue;
}
$newMessage = $this->makeXliffMessage($message);
if ($message->getId() === $message->getSourceString()) {
if (isset($englishCatalogue)) {
try {
$newMessage->setDesc($englishCatalogue->get($message->getId(), $message->getDomain())->getLocaleString());
} catch (InvalidArgumentException $e) {
continue;
}
} else {
$newMessage->setDesc($message->getLocaleString());
}
}
$newCatalogue->add($newMessage);
}
}
$this->innerFileWriter->write($newCatalogue, $domain, $filePath, $format);
}
示例3: write
/**
* @param \JMS\TranslationBundle\Model\MessageCatalogue $catalogue
* @param string $domain
* @param string $filePath
* @param string $format
* @throws \JMS\TranslationBundle\Exception\InvalidArgumentException
*/
public function write(MessageCatalogue $catalogue, $domain, $filePath, $format)
{
if (!isset($this->dumpers[$format])) {
throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $format));
}
// sort messages before dumping
$catalogue->getDomain($domain)->sort(function ($a, $b) {
return strcmp($a->getId(), $b->getId());
});
file_put_contents($filePath, $this->dumpers[$format]->dump($catalogue, $domain));
}
示例4: write
/**
* @param \JMS\TranslationBundle\Model\MessageCatalogue $catalogue
* @param string $domain
* @param string $filePath
* @param string $format
* @throws \JMS\TranslationBundle\Exception\InvalidArgumentException
*/
public function write(MessageCatalogue $catalogue, $domain, $filePath, $format)
{
if (!isset($this->dumpers[$format])) {
$allowedFormats = array_keys($this->dumpers);
$allowedFormatsString = join(',', $allowedFormats);
throw new InvalidArgumentException(sprintf('The format "%s" is not supported. Allowed formats:%s', $format, $allowedFormatsString));
}
// sort messages before dumping
$catalogue->getDomain($domain)->sort(function ($a, $b) {
return strcmp($a->getId(), $b->getId());
});
file_put_contents($filePath, $this->dumpers[$format]->dump($catalogue, $domain));
}
示例5: write
/**
* @param \JMS\TranslationBundle\Model\MessageCatalogue $domain
* @param $filePath
* @param $format
* @param array $outputOptions
* @throws \JMS\TranslationBundle\Exception\InvalidArgumentException
*/
public function write(MessageCatalogue $catalogue, $domain, $filePath, $format, $outputOptions)
{
if (!isset($this->dumpers[$format])) {
throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $format));
}
// sort messages before dumping
$catalogue->getDomain($domain)->sort(function ($a, $b) {
return strcmp($a->getId(), $b->getId());
});
$dumper = $this->dumpers[$format];
if ($dumper instanceof \JMS\TranslationBundle\Translation\Dumper\XliffDumper) {
if (isset($outputOptions['add_date'])) {
$dumper->setAddDate($outputOptions['add_date']);
}
if (isset($outputOptions['add_filerefs'])) {
$dumper->setAddFileRefs($outputOptions['add_filerefs']);
}
}
file_put_contents($filePath, $dumper->dump($catalogue, $domain, $filePath));
}
示例6: dump
public function dump(MessageCatalogue $catalogue, $domain = 'messages', $filePath = null)
{
$symfonyCatalogue = new SymfonyCatalogue($catalogue->getLocale());
foreach ($catalogue->getDomain($domain)->all() as $id => $message) {
$symfonyCatalogue->add(array($id => $message->getLocaleString()), $domain);
}
$tmpPath = sys_get_temp_dir() . '/' . uniqid('translation', false);
if (!is_dir($tmpPath) && false === @mkdir($tmpPath, 0777, true)) {
throw new RuntimeException(sprintf('Could not create temporary directory "%s".', $tmpPath));
}
$this->dumper->dump($symfonyCatalogue, array('path' => $tmpPath));
if (!is_file($tmpFile = $tmpPath . '/' . $domain . '.' . $catalogue->getLocale() . '.' . $this->format)) {
throw new RuntimeException(sprintf('Could not find dumped translation file "%s".', $tmpFile));
}
$contents = file_get_contents($tmpFile);
$fs = new Filesystem();
$fs->remove($tmpPath);
if ('' === $contents) {
throw new RuntimeException(sprintf('Could not dump message catalogue using dumper "%s". It could be that it is not compatible.', get_class($this->dumper)));
}
return $contents;
}
示例7: dump
/**
* @param \JMS\TranslationBundle\Model\MessageCatalogue $domain
* @return string
*/
public function dump(MessageCatalogue $catalogue, $domain = 'messages')
{
$doc = new \DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$doc->appendChild($root = $doc->createElement('xliff'));
$root->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
$root->setAttribute('xmlns:jms', 'urn:jms:translation');
$root->setAttribute('version', '1.2');
$root->appendChild($file = $doc->createElement('file'));
if ($this->addDate) {
$date = new \DateTime();
$file->setAttribute('date', $date->format('Y-m-d\\TH:i:s\\Z'));
}
$file->setAttribute('source-language', $this->sourceLanguage);
$file->setAttribute('target-language', $catalogue->getLocale());
$file->setAttribute('datatype', 'plaintext');
$file->setAttribute('original', 'not.available');
$file->appendChild($header = $doc->createElement('header'));
$header->appendChild($tool = $doc->createElement('tool'));
$tool->setAttribute('tool-id', 'JMSTranslationBundle');
$tool->setAttribute('tool-name', 'JMSTranslationBundle');
$tool->setAttribute('tool-version', JMSTranslationBundle::VERSION);
$header->appendChild($note = $doc->createElement('note'));
$note->appendChild($doc->createTextNode('The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.'));
$file->appendChild($body = $doc->createElement('body'));
foreach ($catalogue->getDomain($domain)->all() as $id => $message) {
$body->appendChild($unit = $doc->createElement('trans-unit'));
$unit->setAttribute('id', hash('sha1', $id));
$unit->setAttribute('resname', $id);
$unit->appendChild($source = $doc->createElement('source'));
if (preg_match('/[<>&]/', $message->getSourceString())) {
$source->appendChild($doc->createCDATASection($message->getSourceString()));
} else {
$source->appendChild($doc->createTextNode($message->getSourceString()));
}
$unit->appendChild($target = $doc->createElement('target'));
if (preg_match('/[<>&]/', $message->getLocaleString())) {
$target->appendChild($doc->createCDATASection($message->getLocaleString()));
} else {
$target->appendChild($doc->createTextNode($message->getLocaleString()));
}
if ($message->isNew()) {
$target->setAttribute('state', 'new');
}
// As per the OASIS XLIFF 1.2 non-XLIFF elements must be at the end of the <trans-unit>
if ($sources = $message->getSources()) {
foreach ($sources as $source) {
if ($source instanceof FileSource) {
$unit->appendChild($refFile = $doc->createElement('jms:reference-file', $source->getPath()));
if ($source->getLine()) {
$refFile->setAttribute('line', $source->getLine());
}
if ($source->getColumn()) {
$refFile->setAttribute('column', $source->getColumn());
}
continue;
}
$unit->appendChild($doc->createElementNS('jms:reference', (string) $source));
}
}
if ($meaning = $message->getMeaning()) {
$unit->setAttribute('extradata', 'Meaning: ' . $meaning);
}
}
return $doc->saveXML();
}
示例8: testGetDomainWhenDomainDoesNotExist
/**
* @expectedException \InvalidArgumentException
*/
public function testGetDomainWhenDomainDoesNotExist()
{
$catalogue = new MessageCatalogue();
$catalogue->getDomain('messages');
}