تالار گفتمان nCIS.ir

نسخه‌ی کامل: ساخت و خواندن فایل زبان (po/mo)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
سلام وقت بخیر دوستان
با سرچ هایی که انجام دادم تقریبا متوجه شدم که این فایل ها رو چطوری بسازم ولی در اینکه بهترین نجوه خواندن (استفاده) از ترجمه ها چیه هنوز به نتیجه خاصی نرسیدم .
اگه کلاس یا فانکشنی در این زمینه دارید لطفا به اشتراک بزارید و نحوه کار رو هم با مثال بفرمایید .
اگه روش بهتری هم سراغ دارید لطفا معرفی کنید .
پیشاپیش سپاس از پاسختون Heart
لطفا تا جایی که خودتون فهمیدین رو قرار بدین اینجا، بقیشم انشاالله دوستان کمک میکنن.
نحوه ساخت فایل رو فهمیدم .
ولی برای خوندن نمیدونم چه روشی بهینه تر هست .
وردپرس هم برای زبان از این روش استفاده می کنه .
array بهینه تر نیست ؟
باید از کتابخانه GetText استفاده کنید: http://php.net/manual/en/book.gettext.php

این لینک رو ببینید: http://stackoverflow.com/questions/88020...ion-in-php
کار نمی کنه :
<?php
$language = 'fa';
potent("LANG=$language"); 
setlocale(LC_MESSAGES, $language );

// Set the text domain as 'messages'
$domain = 'one';
bindtextdomain($domain, "./locale");
textdomain($domain);

echo gettext('HELLO_WORLD');
یک فایل one.po در مسیر public_html/locale/fa ایجاد کردم با محتویات :
کد:
#Test token 1
msgid "HELLO_WORLD"
msgstr "salam"
ولی همون متن HELLO_WORLD چاپ میشه
مشکل از چی میتونه باشه ؟
معمولاً وقتی نمیتونه فایل ترجمه رو پیدا کنه، متن پیشفرض (انگلیسی) نمایش داده میشه. درخصوص سطح دسترسی پوشه ها و فایلها (اگه از لینوکس استفاده میکنید) بررسی کنید.
از پرمیشن هم نیست 777 گذاشتم همه چیز رو ولی باز اوکی نشد
آدرس locale رو هم به شکل های مختلف دادم باز کار نکرد .
محتوای فایلهای po. خودتون رو بگذارین.
تویه پست اول گذاشتم :
کد:
#Test token 1
msgid "HELLO_WORLD"
msgstr "salam"
یک سوال :
اگه با array درست کنم بهیته تر نیست ؟
راحتتره ولی نمیدونم این چرا کار نمیکنه.
راحتیش رو میدونم منظورم اینه کدوم بهینه تره
برای شما هم کار نمی کنه ؟
تم ویوور بدم یک نگاه بندازید ؟
نه برای منم کار نمیکنه. اینجا رو ببینید: https://bugs.php.net/bug.php?id=66265

گویا وابستگی زیادی به Locale های نصب شده روی سیستم داره. بنظرم کار با همون آرایه ها بهتر باشه. البته بحث مصرف حافظه هم هست و دقیقاً نمیدونم gettext کل فایل ترجمه رو میاره توی حافظه و بعد انتخاب میکنه یا توی فایل دنبال msgid میگرده و همون رو لود میکنه. بهرحال اگه اولی باشه با آرایه فرقی نداره و اگه دومی باشه هم پردازش سنگینتری خواهد داشت.
تو ویندوز برا منم کار نمیکنه!!!
توی آموزش های خارجی هم حرفی از Locale های نصب شده روی سیستم زده نشده بود. یا حتی اگه ربط داشته باشه تو ویندوز باید کار میکرد چون Locale نصب شده نداریم تو ویندوز که.
فایل mo رو هم دقیقا همونجا گذاشتم که گفته بود!
صفحات: 1 2