تخزين المحتوى بلغات متعددة ؟ E. g.الإنجليزية, الفرنسية, الألمانية

StackOverflow https://stackoverflow.com/questions/72410

  •  09-06-2019
  •  | 
  •  

سؤال

طريقة تخزين (الحاضر) النص على موقع الويب المقصود للاستخدام في جميع أنحاء العالم مع العديد من اللغات ؟ المحتوى هو الغالب في شكل 500+ كلمة المواد ، على الرغم من أنني سوف تحتاج إلى ترجمة قصاصات صغيرة من النص على كل صفحة أيضا (مثل "طباعة هذه المادة" أو "العودة إلى القائمة").

أعرف أن هناك العديد من CMS حزم أن التعامل مع لغات متعددة ، ولكن يجب أن تتكامل مع الموجودة لدينا ASP نظم جدا, لذلك أنا تجاهل مثل هذه الحلول.

واحد القلق لدي هو أن جوجل يجب أن تكون قادرة على العثور على الصفحات حتى المستخدمين الأجانب.أنا أقل قلقا حول القضايا مع معالجة التواريخ العملات.

أخشى أن ، من اليسار إلى الأجهزة الخاصة بي سوف يخترع طريقة لفعل هذا العمل ، ولكن في نهاية المطاف يؤدي إلى كارثة!أريد أن أعرف ما الحلول الفنية كنت قد استخدمت فعلا على مشاريع حقيقية ، وليس مجربة الأفكار!شكرا جزيلا.


بحثت في ملفات RESX, ولكن شعرت أنها كانت غير مناسبة للجميع ولكن أتفه حلول ترجمة (سأتطرق إذا كان أي شخص يريد أن يعرف).

جوجل سوف تساعد لي مع ترجمة النص ، ولكن ليس تخزين/تقديم ذلك.

وقد أي شخص يعمل على متعدد اللغات المشاريع التي تعتمد على التعليمات البرمجية الخاصة بهم للحصول على العرض ؟


أي الأفكار بتقديم المحتوى من خلال الطرق التالية ، الذي هو أفضل ؟

(هذه ليست حقيقية عناوين كنت مجرد عرض أمثلة)

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

المحلول

أولا وضع كل رمز لجميع اللغات تحت مجال واحد - أنها سوف تساعد google-رتبة.

لدينا متعدد اللغات بشكل كامل مع localisations تخزينها في قاعدة البيانات ولكن مؤقتا مع تطبيق ويب.

أينما نريد التوطين تظهر نستخدم:

<%$ Resources: LanguageProvider, Path/To/Localisation %>

ثم في موقعنا.التكوين:

<globalization resourceProviderFactoryType="FactoryClassName, AssemblyName"/>

FactoryClassName ثم تنفذ ResourceProviderFactory لتوفير الفعلية وظائف حيوية.Localisations يتم تخزينها في قاعدة البيانات مع سلسلة مفتاح "Path/To/التوطين"

من المهم أن ذاكرة التخزين المؤقت المحلية القيم - أنت لا تريد أن يكون لها الكثير من DB عمليات البحث في كل صفحة ، ونحن ذاكرة التخزين المؤقت آلاف مترجمة سلاسل مع أي مشكلات في الأداء.

استخدام المستخدم الحالي المتصفح توطين اختيار اللغة لخدمة ما يصل.

نصائح أخرى

قد ترغب في التحقق GNU Gettext المشروع - على الأقل شيئا في البداية.

التعديل لإضافة معلومات عن المشاريع:

لقد عملت على عدة مشاريع متعددة اللغات باستخدام Gettext التكنولوجيا في تقنيات مختلفة ، بما في ذلك C++/MFC و J2EE/JSP, وعملت كل شيء على ما يرام.ومع ذلك ، تحتاج إلى كتابة/العثور على التعليمات البرمجية الخاصة بك لعرض بيانات مترجم بالطبع.

إذا كنت تستخدم .صافي, أنصح الذهاب مع واحد أو أكثر من ملفات الموارد (.resx).هناك الكثير من الوثائق حول هذا على MSDN.

كما هو الحال مع معظم البرمجة العامة الأسئلة ، فإنه يعتمد على الاحتياجات الخاصة بك.

على نص ثابت, وأود أن استخدام ملفات RESX.بالنسبة لي،.صافي مبرمج, فهي سهلة الاستخدام .Net Framework لديه دعم جيد بالنسبة لهم.

أي دينامية النص ، وأنا أميل إلى تخزين هذه المعلومات في قاعدة البيانات ، خاصة إذا كان الموقع المشرف سيكون غير المطور.في الماضي لقد استعملت نهجين ، إضافة اللغة عمود وخلق مختلفة إدخالات لغات مختلفة أو إنشاء جدول منفصل لتخزين لغة نص معين.

الجدول لأول النهج قد تبدو شيئا مثل هذا:

معرف المقالة | معرف اللغة | لغة معينة نص المادة | تم إنشاؤها بواسطة | تاريخ الإنشاء

هذا يعمل في الحالات حيث يمكنك إنشاء إدخالات مختلفة عن مقالة معينة و لا تحتاج للحفاظ على أي من البيانات المرتبطة مع هذه الإدخالات المختلفة في المزامنة (مثل تحديث الطابع الزمني).

أما النهج الآخر أن يكون اثنين من جداول منفصلة ، واحدة غير لغة نص معين (id تاريخ إنشاء إنشاء المستخدم ، تم تحديث التاريخ ، إلخ) و جدول آخر يحتوي على لغة محددة في النص.حتى الجداول قد تبدو شيئا مثل هذا:

الجدول الأول:معرف المقالة | تم إنشاؤها بواسطة | تاريخ إنشاء | تحديث | تم تحديث التاريخ

الجدول الثاني:معرف المقالة | معرف اللغة | لغة معينة نص المادة

بالنسبة لي السؤال يأتي إلى أسفل إلى تحديث غير لغة تعتمد على البيانات.إذا كنت تقوم بتحديث البيانات ثم أود أن تميل نحو النهج الثاني ، وإلا كنت أذهب مع النهج الأول كما أرى أن أبسط (لا يمكن أن ننسى مبدأ KISS).

إذا كنت قلقا فقط حول محتوى المادة ترجمة و لا تحتاج متكاملة الخيار ، ولقد استخدمت ترجمة جوجل في الماضي ويعمل كبيرة على نطاق أصغر.

السؤال الرائع.

أنا حل هذه المشكلة عن موقع جعلت (الرابط في ملفي الشخصي) مع محلية الصنع بيثون 3 النصي الذي يترجم العامة قالب على الطاير و إدراج محتوى معين الصفحة من اللغة المطلوبة (أو تخمينها من قبل أباتشي من قبول اللغة).

كان ممتعا منذ أن وصلت إلى تعلم بايثون و اكتب بلدي صغيرة-مكتبة لإنشاء صفحات المحتوى.الجانب السلبي واحد هو أن لدينا استضافة لم بيثون 3 ، ولكن أنا جعل بلدي النصي توليد HTML ثابتة (نسخة أصلية واحدة تدرس User-agent) ومن ثم تحميله على الخادم.التي تعمل حتى الآن وصنع لغة جديدة نسخة من الموقع هو الآن نسيم :)

أكبر سلبيات هذه الطريقة أنها تستغرق وقتا طويلا لكتابة الأشياء من الصفر.حتى إذا كنت تريد, قطرة لي خط وأنا سوف تساعدك على استخدام بلدي النصي :)

أما بالنسبة URL تنسيق استخدام site.com/content/example.fr لأن هذا يسمح أباتشي لأداء لغة التفاوض في حالة شخص يسأل عن /content/example وقد المستعرض أخبر أنه يحب اللغة الفرنسية.عندما تفعل هذا أباتشي يضيف أيضا .html أو أيا كان على سبيل المكافأة.

لذلك عندما طلب example و لدي ملفات

example.fr
example.en
example.vi

أباتشي تلقائيا المضي قدما example.vi لشخص مع فيتنامي-تكوين المستعرض أو example.en لشخص مع الألمانية-تكوين المستعرض.مفيدة جدا.

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