SonataMediaBundle. Русская версия перевода файла xliff

в 10:17, , рубрики: php, symfony, symfony 2, админка, метки: ,

Доброго времени сутоке. Во время работы над админ частью одного русскоязычного ресурса, появилась необходимость, что бы вся админка была на русском языке. В самой SonataAdminBundle файлик такой есть, и это не вызвывает сложностей. Но как оказалось, подключенная к AdminBundle другой Сонатовский бандл, а именно SonataMediaBundle не обладает таким интерфейсом. Собственно появилось необходимость перевести его, так как не нашел в сети. Что из этого получилось? Прошу под кат.

Собственно сам процесс назначения текущего языка в Symfony находится в файле app/config/config.yml находим там строчку translator: { fallback: %locale% } (если закомментирована, то раскоментируйте ее). После наш путь лежит в файл app/config/parameters.yml в нем находим строчку locale: en и меняем на locale: ru. Итак, саму Symfony к русскому языку мы подготовили.

Действия, который необходимо выполнить далее. Если у вас установлена Sonata (а я предполагаю что так и есть), то у вас в папке src должна быть папка Application в ней папка Sonata и при условии включения SonataMediaBundle должна появиться папка MediaBundle. Если так и есть, то идем туда. (Если такой не возникло, спрашивайте в комментах или пиши на мыло: sin666m4a1fox@gmail.com). В папке src/Application/Sonata/MediaBundle находим папку Resources, а в ней папку translations. Собственно в ней и создаем файл SonataMediaBundle.ru.xliff с таким содержимым:

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="file.ext">
        <body>
        	<trans-unit id="default">
                <source>default</source>
                <target>По Умолчанию</target>
            </trans-unit>
            <trans-unit id="sidemenu.link_edit_media">
                <source>sidemenu.link_edit_media</source>
                <target>Редактировать</target>
            </trans-unit>
            <trans-unit id="sidemenu.link_media_view">
                <source>sidemenu.link_media_view</source>
                <target>Просмотр</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_media_create">
                <source>breadcrumb.link_media_create</source>
                <target>Создать</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_media_list">
                <source>breadcrumb.link_media_list</source>
                <target>Медиа</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_media_edit">
                <source>breadcrumb.link_media_edit</source>
                <target>Редактировать</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_media_view">
                <source>breadcrumb.link_media_view</source>
                <target>Просмотр</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_media_delete">
                <source>breadcrumb.link_media_delete</source>
                <target>Удалить</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_gallery_create">
                <source>breadcrumb.link_gallery_create</source>
                <target>Создать</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_gallery_list">
                <source>breadcrumb.link_gallery_list</source>
                <target>Галереи</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_gallery_edit">
                <source>breadcrumb.link_gallery_edit</source>
                <target>Редактировать</target>
            </trans-unit>
            <trans-unit id="breadcrumb.link_gallery_delete">
                <source>breadcrumb.link_gallery_delete</source>
                <target>Удалить</target>
            </trans-unit>
            <trans-unit id="media">
                <source>media</source>
                <target>Медиа</target>
            </trans-unit>
            <trans-unit id="gallery">
                <source>gallery</source>
                <target>Галерея</target>
            </trans-unit>
            <trans-unit id="title_select_provider">
                <source>title_select_provider</source>
                <target>Выбрать медиа поставщика</target>
            </trans-unit>
            <trans-unit id="no_provider_available">
                <source>no_provider_available</source>
                <target>Поставщик не доступен</target>
            </trans-unit>
            <trans-unit id="title.media_preview">
                <source>title.media_preview</source>
                <target>Предпросмтр</target>
            </trans-unit>
            <trans-unit id="title.media_thumbnail">
                <source>title.media_thumbnail</source>
                <target>Миниатюра</target>
            </trans-unit>
            <trans-unit id="title.informations">
                <source>title.informations</source>
                <target>Информация</target>
            </trans-unit>
            <trans-unit id="label.size">
                <source>label.size</source>
                <target>Размер</target>
            </trans-unit>
            <trans-unit id="label.width">
                <source>label.width</source>
                <target>Ширина</target>
            </trans-unit>
            <trans-unit id="label.height">
                <source>label.height</source>
                <target>Высота</target>
            </trans-unit>
            <trans-unit id="label.content_type">
                <source>label.content_type</source>
                <target>Тип контента</target>
            </trans-unit>
            <trans-unit id="label.copyright">
                <source>label.copyright</source>
                <target>Лицензия</target>
            </trans-unit>
            <trans-unit id="label.author_name">
                <source>label.author_name</source>
                <target>Автор</target>
            </trans-unit>
            <trans-unit id="label.cdn">
                <source>label.cdn</source>
                <target>Сеть доставки контента</target>
            </trans-unit>
            <trans-unit id="label.to_be_flushed">
                <source>label.to_be_flushed</source>
                <target>Flushable</target>
            </trans-unit>
            <trans-unit id="label.flushed_at">
                <source>label.flushed_at</source>
                <target>Опубликовано: </target>
            </trans-unit>
            <trans-unit id="label.public_url">
                <source>label.public_url</source>
                <target>Публичная Ссылка</target>
            </trans-unit>
            <trans-unit id="label.name">
                <source>label.name</source>
                <target>Имя</target>
            </trans-unit>
            <trans-unit id="label.file">
                <source>label.file</source>
                <target>Файл</target>
            </trans-unit>
            <trans-unit id="label.author">
                <source>label.author</source>
                <target>Автор</target>
            </trans-unit>
            <trans-unit id="label.enabled">
                <source>label.enabled</source>
                <target>Включить</target>
            </trans-unit>
            <trans-unit id="label.cdn_is_flushable">
                <source>label.cdn_is_flushable</source>
                <target>Flush CDN</target>
            </trans-unit>
            <trans-unit id="label.video_reference">
                <source>label.video_reference</source>
                <target>Изменить видео</target>
            </trans-unit>
            <trans-unit id="label.description">
                <source>label.description</source>
                <target>Описание</target>
            </trans-unit>
            <trans-unit id="title.formats">
                <source>title.formats</source>
                <target>Форматы</target>
            </trans-unit>
            <trans-unit id="label.select_context">
                <source>label.select_context</source>
                <target>Контекст: </target>
            </trans-unit>
            <trans-unit id="label.select_provider">
                <source>label.select_provider</source>
                <target>Тип : </target>
            </trans-unit>
            <trans-unit id="link.all_providers">
                <source>link.all_providers</source>
                <target>Все</target>
            </trans-unit>
            <trans-unit id="sonata.media.provider.dailymotion">
                <source>sonata.media.provider.dailymotion</source>
                <target>DailyMotion</target>
            </trans-unit>
            <trans-unit id="sonata.media.provider.youtube">
                <source>sonata.media.provider.youtube</source>
                <target>YouTube</target>
            </trans-unit>
            <trans-unit id="sonata.media.provider.vimeo">
                <source>sonata.media.provider.vimeo</source>
                <target>Vimeo</target>
            </trans-unit>
            <trans-unit id="sonata.media.provider.image">
                <source>sonata.media.provider.image</source>
                <target>Изображение</target>
            </trans-unit>
            <trans-unit id="sonata.media.provider.file">
                <source>sonata.media.provider.file</source>
                <target>Файлы</target>
            </trans-unit>
            <trans-unit id="label.protected_download_url">
                <source>label.protected_download_url</source>
                <target>Защищенная ссылка</target>
            </trans-unit>
            <trans-unit id="description.roles_download_strategy">
                <source>description.roles_download_strategy</source>
                <target>Медиа файлы могу быть добавленны пользователями с ролями : %roles%.</target>
            </trans-unit>
            <trans-unit id="label.protected_download_url_notice">
                <source>label.protected_download_url_notice</source>
                <target>Предупреждения</target>
            </trans-unit>
            <trans-unit id="description.public_download_strategy">
                <source>description.public_download_strategy</source>
                <target>Медиа файлы могут быть добавлены кем угодно.</target>
            </trans-unit>
            <trans-unit id="description.forbidden_download_strategy">
                <source>description.forbidden_download_strategy</source>
                <target>Медиа файлы не могут быть добавленны никем.</target>
            </trans-unit>
            <trans-unit id="link.test_protected_url">
                <source>link.test_protected_url</source>
                <target>Ссылка для скачивания</target>
            </trans-unit>
            <trans-unit id="label.edit_with_pixlr">
                <source>label.edit_with_pixlr</source>
                <target>Редактировать файлы с помощью Pixlr</target>
            </trans-unit>
            <trans-unit id="label.pixlr_warning">
                <source>label.pixlr_warning</source>
                <target>
                    <![CDATA[
                        <span class="label important">Important</span> you are going to expose the media to an <strong>external service</strong>. <br />
                        If you are working on confidentiel materials, please do not use this service.
                    ]]>
                </target>
            </trans-unit>
            <trans-unit id="label.pixlr_express_editor">
                <source>label.pixlr_express_editor</source>
                <target>
                    <![CDATA[
                        <strong style="color: white">Express Editor</strong> <br />
                        Simple interface for quick editing
                    ]]>
                </target>
            </trans-unit>
            <trans-unit id="label.pixlr_advanced_editor">
                <source>label.pixlr_advanced_editor</source>
                <target>
                    <![CDATA[
                        <strong style="color: white">Advanced Editor</strong> <br />
                        Experimented users only
                    ]]>
                </target>
            </trans-unit>
            <trans-unit id="form.label_enabled">
                <source>form.label_enabled</source>
                <target>Включить</target>
            </trans-unit>
            <trans-unit id="form.label_media">
                <source>form.label_media</source>
                <target>Средняя</target>
            </trans-unit>
            <trans-unit id="form.label_position">
                <source>form.label_position</source>
                <target>Позиция</target>
            </trans-unit>
            <trans-unit id="form.label_context">
                <source>form.label_context</source>
                <target>Контекст</target>
            </trans-unit>
            <trans-unit id="form.label_name">
                <source>form.label_name</source>
                <target>Имя</target>
            </trans-unit>
            <trans-unit id="form.label_default_format">
                <source>form.label_default_format</source>
                <target>Формат</target>
            </trans-unit>
            <trans-unit id="form.label_gallery_has_medias">
                <source>form.label_gallery_has_medias</source>
                <target>Медиа</target>
            </trans-unit>
            <trans-unit id="form.label_author_name">
                <source>form.label_author_name</source>
                <target>Автор</target>
            </trans-unit>
            <trans-unit id="form.label_cdn_is_flushable">
                <source>form.label_cdn_is_flushable</source>
                <target>Flush CDN</target>
            </trans-unit>
            <trans-unit id="form.label_description">
                <source>form.label_description</source>
                <target>Описание</target>
            </trans-unit>
            <trans-unit id="form.label_copyright">
                <source>form.label_copyright</source>
                <target>Лицензия</target>
            </trans-unit>
            <trans-unit id="list.label_enabled">
                <source>list.label_enabled</source>
                <target>Включить</target>
            </trans-unit>
            <trans-unit id="list.label_name">
                <source>list.label_name</source>
                <target>Имя</target>
            </trans-unit>
            <trans-unit id="list.label_context">
                <source>list.label_context</source>
                <target>Контекст</target>
            </trans-unit>
            <trans-unit id="list.label_default_format">
                <source>list.label_default_format</source>
                <target>Формат</target>
            </trans-unit>
            <trans-unit id="list.label__action">
                <source>list.label__action</source>
                <target>Действие</target>
            </trans-unit>
            <trans-unit id="list.label_custom">
                <source>list.label_custom</source>
                <target>Пользовательский</target>
            </trans-unit>
            <trans-unit id="filter.label_name">
                <source>filter.label_name</source>
                <target>Имя</target>
            </trans-unit>
            <trans-unit id="filter.label_provider_reference">
                <source>filter.label_provider_reference</source>
                <target>Ссылка на поставщика</target>
            </trans-unit>

            <trans-unit id="filter.label_enabled">
                <source>filter.label_enabled</source>
                <target>Включить</target>
            </trans-unit>

            <trans-unit id="filter.label_context">
                <source>filter.label_context</source>
                <target>Контекст</target>
            </trans-unit>
        </body>
    </file>
</xliff>

Переводил это дело сам, и где то используя google translation поэтому могут быть (а наверно и есть) ошибки, но вы вольны менять значения русской версии по своему усмотрению и по своим требованиям.

P.S. Если что то лишнее в файле затесалось, то прошу прощения, возможно строки из проекта и там засветились. Собственно вот и все. Простой способ сделать в SonataMediaBundle свой перевод кнопок и строк. Всем удачи. До новых встреч.

P.S.S Не нашел как оформить файл xliff ибо хабровский source сбрасывает и делает не реальным чтение файла. Уж простите, может кто подскажет :)

Автор: m4a1fox

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js