تصویر محمدعلی اکبری

تا قبل از نسخه 2.1 فایل‌های xliff، PHP و XML برای ترجمه عبارات توسط سیمفونی پشتیبانی می‌شود. اما کتابخانه‌های مربوط به خواندن انواع فایل‌های جدید از نسخه 2.1 اضافه شده است:
این کتابخانه ها در مسیر vendor\symfony\symfony\src\Symfony\Component\Translation\Loader قایل مشاهده هستند، همچنین لیست آنها در زیر آمده است:

 

ArrayLoader.php
CsvFileLoader.php
IcuDatFileLoader.php
IcuResFileLoader.php
IniFileLoader.php
LoaderInterface.php
MoFileLoader.php
PhpFileLoader.php
PoFileLoader.php
QtTranslationsLoader.php
XliffFileLoader.php
YamlFileLoader.php


یکی از محبوب‌ترین فرمت‌ها برای ترجمه عبارات استفاده از gettext است که در اینجا دو کتابخانه PoFileLoader و MoFileLoader مربوط به آن هستند.
برای فعال‌سازی ترجمه یا به عبارتی i18n در پروژه سیمفونی لازم است برخی متغیر‌ها در فایل تنظیمات پروژه تعریف شود:

 

# app/config/config.yml
framework:
    ...
    translator:      { fallback: "%locale%" }
    default_locale:  "%default_locale%"
    ...

 

# app/config/parameters.yml

parameters:
    ...
    locale: en
    default_locale: fa_ir
    ...

 

 همین تنظیمات برای فعال سازی ترجمه کافی است. بقیه کارها بر عهده سیمفونی می‌باشد. تنها کاری که باید انجام دهید ایجاد فایل‌های ترجمه و قرار دادن آنها در جای درست است.
یکی از فرمت‌هایی که توسط سیمفونی پشتیبانی می‌شود را انتخاب کنید (به عنوان مثال MO)، فایل مربوطه را در مسیر Resources/translations از Bundle مورد نظر و یا در مسیر app/Resources/translations با نام messages.fa_ir.mo قرار دهید.
بعد از اجرای برنامه، سیمفونی مسیرهای مربوطه را برای یافتن فایل‌های ترجمه پیمایش می‌کند. با یافتن messages.fa_ir.mo کلاس MoFileLoader به صورت خودکار عمل کرده و عبارات ترجمه را وارد برنامه می‌کند.
محلی‌سازی آدرس‌ها (URL)
یکی از پارامترهای خاصی که در کامپوننت Router در سیمفونی تعریف شده است _locale می‌باشد. برای تعیین زبان صفحه‌ای که کاربر در حال مشاهده آن است، کافی است تنظیمات زیر را در Router اعمال کنید:

# app/config/router.yml

utm_design:
    resource: "@YYYXXXBundle/Resources/config/routing.yml"
    prefix:   /{_locale}/
    requirements:
        _locale: en|fa_ir

افزودن نظر جدید