Truy cập vào URL1 -> xác định được id -> Article
-> có ArtitlceTranslation tương ứng với culture hiện tại không
-> xác định được category_id -> category_id
-> có CategoryTranslation tương ứng với culture hiện tại không
Khi bài viết không có bản dịch ở ngôn ngữ L1 thì tên bài viết sẽ được lấy mặc định theo ngôn ngữ sf_default_culture (en)
sfContext::getInstance()->getUser()->setCulture('special');#ngôn ngữ L1
$article = ArticleTable::getInstance()->find(12);
echo $article->getName(); # sẽ trả về $article->Translation['en']->name
Cấu hình sf_default_culture ở settings.yml cho từng ứng dụng (apps/mobile/config/settings.yml)
all:
.settings:
defaut_culture: vi
############################################################
Không dùng slug, chỉ dùng id:
/article/show/id/1 => cùng 1 URL có lúc có nội dung có lúc không (phụ thuộc culture)
Chỉ dùng slug:
- Slug là unique
- Slug không là unique:
Từ slug kết hợp với culture -> ko có bài viết -> Từ slug xác định id -> Từ id tìm bài viết có bản dịch ứng với culture
Khi truy cập: /article/slug-vietnamese sẽ giống với /article/slug-english
Các lỗi thường gặp:
- Đang ở tiếng Anh vào trang chi tiết bài viết OK, chuyển sang tiếng Việt thấy báo lỗi
Nguyên nhân: Có thành phần liên quan đến bài viết cũng có tính I18N ví dụ chuyên mục. Mặc dù bài viết đã có 2 bản dịch (Anh, Việt), nhưng chuyên mục thì mới chỉ có bản dịch tiếng Anh.
NestedSet Nhiều root:
X Root: level = 0
Thể loại phim: level = 1
Bộ phim: level = 2
Title:
My note for I18N Symfony Doctrine
Description:
Truy cập vào URL1 -> xác định được id -> Article -> có ArtitlceTranslation tương ứng với culture hiện tại không -> xác địn...
...
Rating:
4