سؤال

هناك بعض البرامج التعليمية هناك للنزعة (W / POEDIT) ... لسوء الحظ، إنه في الغالب لبيئة UNIX. وأكثر من المؤسف هو أن أقوم بتشغيل خادم WAMP الخاص بي على نظام التشغيل Windows XP (لكنني أقوم بتطوير بيئة UNIX) ولا يمكن لأي من البرامج التعليمية الحصول على Gettext يعمل بشكل صحيح بالنسبة لي. من صفحة الرجل (http://us3.php.net/manual/en/book.gettext.php.)، يبدو أنه عملية مختلفة على بيئة Windows. لقد جربت بعض الحلول في التعليقات ولكن ما زلت لا أستطيع الحصول عليها للعمل! من فضلك، قضيت ساعات طويلة في هذا، ونأمل أن يشيرني شخص ما في الاتجاه الصحيح للحصول على هذا الشيء للعمل! (وأنا متأكد من وجود الآخرين هناك الذين يشاركونهم إحباط بلدي). حتى الآن مع إعدادي، أنا فقط الحصول على إخراج "مرحبا العالم!" في حين يجب أن أحصل على السلسلة المترجمة.

هنا هو الإعداد الخاص بي / الرمز حتى الآن:

<?php
// test.php
if (!defined('LC_MESSAGES')) {
    define('LC_MESSAGES', 6);

}
$locale = "deu_DEU"; // apparently the locales are different on a WINDOWS platform

putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("greetings", ".\locale");
textdomain("greetings");


echo _("Hello World"); 

?>

هيكل المجلد

الجذر: C:  Program Files  WampServer 2  WWW Test.php: C:  Program Files  WampServer 2  www  Site .Po: C:  Program Files  WampServer 2  www  Site  Locale  Deu_deu  Lc_messages  Greetings.po .mo: c:  program files  wampserver 2  www  site  locale  deu_deu  lc_messages  greetings.mo

يرجى تقديم النصيحة! شكرا على وقتك :)

هل كانت مفيدة؟

المحلول 6

كان لأنني لم يكن لدي اللغيات المثبتة.

نصائح أخرى

هربت إلى مشاكل أثناء العمل مع Gettext على جهازي المحلي، وبعد بعض البحث، وجدت هذه الصفحة التي حل مشكلتي:http://www.kipraS.com/getting-gettext-to-work-in-apache-on-windows/96.

أنا اقتبس من صفحة الويب:

على خوادم Linux (أو أي خوادم أخرى منفصلة Windows)، فإن طريقة القيام بذلك هي:

setlocale(LC_MESSAGES, “en_US”);

الطريقة الصحيحة لتعيين المنطقة على ويندوز هي:

putenv(“LC_ALL=en_US”);

كان لدي نفس المشكلة، وأهدر يوما تقريبا أو نحو ذلك. أخيرا، وجدت حلا بسيطا للغاية، أي إلغاء تثبيت خادم Wamp (الإصدار 2.1)، و تثبيت نسخة أحدث (WampServer 2.1E - 32 بت). من الغريب، لكنها حل المشكلة تماما.

هنا هو نموذج التعليمات البرمجية التي عملت بالنسبة لي:

<?php

    $locale = "deu_DEU";

    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);

    bindtextdomain("greetings", "./locale");
    textdomain("greetings");

    echo _("Hello World");

?>

آمل أن يساعد.

لم أقم بإجراء تحقيق كامل في هذا ولكن أنا متأكد من أن أحد أخطائك هو أنك استخدمت رموز لغة غير صالحة - حتى على Windows Rooles Rodes هي نفسها - هذه هي لغات Gettext وهي عبارة عن منصة عبر.

يرجى محاولة استخدام فقط "DE" ك Code Locale، يجب أن تعمل. تأكد أيضا من تثبيت PHP الخاص بك تمديد Gettext وتنشيطه (تحقق مع Phpinfo).

قد يكون بعد فوات الأوان، لكنني كنت أواجه مشكلات مماثلة حتى أتمت "العلامة المفتوحة القصيرة" في إعدادات Wamp PHP الخاصة بي

هذا هو الحل الذي عمل بالنسبة لي. هذا يعمل على أحدث wampserver. (مصدر: http://www.extradrm.com/blog/؟p=1035. )

1) تحميل php-gettext من هنا: https://launchpad.net/php-gettext/+download. وفك ضغطها

2) أضف الملفات التالية الموجودة في جذر الحزمة في نفس المجلد مثل Test-language.php: - Gettext.inc - Gettext.php - Streams.php

3) فتح php.ini الخاص بك والتعليق خارج wampserver php_gettext.dll:

;extension=php_gettext.dll

4) هذا هو اختبار ملف الاختبار الجديد - language.php

<?php
error_reporting(E_ALL | E_STRICT);

// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', 'C:/wamp/www/test/locale');
define('DEFAULT_LOCALE', 'es_ES');

require_once('gettext.inc');

$supported_locales = array('en_US', 'sr_CS', 'de_CH','es_ES');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;

//var_dump($locale);die();

// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset'))
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

echo gettext("HELLO_WORLD");
?>

بعد كل هذا، يجب عليك إنشاء مجلد LOKALE أو مجلد EN_US (أو لغة أخرى) مجلد LC_MESSAGES ثم ضع ملف الرسائل. po.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top