您在這裡

Internationalization

jimmy's 的頭像
jimmy 在 2006-08-19 (週六) 21:47 發表
模組介紹: 

提供多國語言網站的建置。i18n包含多種模組,支援一個多國語言網站的建制。
1. 多國語言的vocabulary 分類表,對應的語言顯示對應的分類
2. 多國語言的block 區塊,對應的語言顯示對應的block
3. 多國語言的node 內容,對應的語言顯示對應的node
4. 多國語言的menu 選單,對應的語言,顯示對應的menu
5. 多國語言的variable 變數,對應的語言,顯示對應的變數(如site slogan,site name等變數)。
6. 多國語言的切換,提供一個預設的block區塊,讓人方便切換不同語言

模組分類:

模組版本:

回應

primary link,4.7版的作法是只要你用預設的語言新建primary link,i18n系統就會自動把該詞彙加進語系翻譯裡頭。這時只要到
admin/locale/string/search
這裡找找看剛剛新增的字彙,就可以針對不同語言進行翻譯囉!

--
http://jimmy.j2.idv.tw

--
from open mind to open source~

這部份,我trace了一下code,語系切換的確不包含內容翻譯切換
因為產生的路徑是沒有包含翻譯的node
我做了一些dirty hack,需要的人可以湊合的用看看,之後我也會給i18n的作者參考一下這樣的作法。

step0.
請先確定translation.module有啟用。
請先確定有開啟content types設定裡頭「Multilingual support」有開啟
(以page這個content type為例,admin/settings/content-types/page 裡頭可以看到選項)

step1.
在i18n.module裡找到function i18n_path(大概在291行左右)

step2.
把下面的程式碼,插入function i18n_path(){ 這一行下面
目的是為了要讓更改block產生連結的過程,讓對應的翻譯node可以正確加入

function i18n_path($path, $lang) {
  if(arg(0)=='node' && is_numeric(arg(1))){
    if(module_exist('translation')){
      $tnid = translation_node_nid(arg(1), $lang);
      $p = explode('/', $path);
      $p[1] = $tnid ? $tnid : arg(1);
      $path = implode('/', $p);
    }
  }

step3.
啟用switch language這個block,試看看效果吧

--
http://jimmy.j2.idv.tw

--
from open mind to open source~

他會讓首頁斷掉嗎?

我試了幾次,內容切換很棒,很順暢

但是,就是回首頁(網站資訊中的指定首頁 / site information / Default front page )

每次都跳出 404 錯誤

我有一個問題~~
就是使用中英文版。然後指定首頁的部份~~~
應要如何各別指定呢?
像英文和中文就是各建內容類型的頁面,但是~中英文頁面都有指定想要預設的頁面…要怎設定首頁呢?

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

您好想詢問
那意思是指我將下面代碼整個貼在上面就可以設定多語了,是這意思嘛?
因為>w<我找不到要怎設…
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
// Contact form information
'contact_form_information',
// For theme variables, read more below
'theme_settings',
'theme_garland_settings',
);

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我翻譯一下好了,如何做到不同語言,呈現不同首頁

1.增加 site_frontpage 的資訊
2.分別使用不同語言設定首頁,這樣就能夠分開首頁資訊了

------

那麼 1. 是怎麼做到的,他提到要使用 multilingual variables

通常要打開 /sites/default/settings.php 這個標準的設定檔

打開並編輯這個檔案,再最後補上 上述的程式碼

/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n is enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
// Contact form information
'contact_form_information',
// For theme variables, read more below
'theme_settings',
'theme_garland_settings',
);

並留意最後一行 theme_garland_settings 中間的 garland 改成你自己使用的主題,即可

LeS您好:
但我還是作不出效果~很不好意思的再問你一下
但是增加 site_frontpage 的資訊就是修改settings.php的意思,然後在網站資訊中就能分別設不同首頁的意思嘛?
那意思就是於/sites/default/settings.php設定檔中加上如上代碼然後修改自已目前所用的版型
但是啊我出現如下錯誤訊息~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我後來就將版型註解掉,只剩如下~
之後將中文版和英文版的內容類型所建立的頁面都取為同一個名字~
使用Automatic alias的方式~都命名同一個網頁路徑~
然後再到網站資料將首頁預設好~~
不知您說的方式是不是這意思就能達到呢?
想說沒命名版型的話應不會有問題吧~


'theme_settings',
//'theme_garland_settings',

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

而且覺得啊有時選單的部份在ie下會有點切不過去的亂掉~~
如果是切英文版的有時選單全部看不到~~如果切中文版可能混一些英文選單~~
但選單中的語系我都有特別的勾選選單語系了~~
>w<~~help~~~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我的作法是1.建立中文首頁(假設 node/1 標題 twhome ),
然後翻譯成英文(假設 node/2 標題 enhome),

2.那麼再開啟區塊 block 中多國語言的區塊,語言選擇
這樣就能夠隨時切換中英文

3.上述的程式碼 確認有寫進 setting.php 並且有出現 ,This is a multilingual variable.

4.進入中文,並選擇網站資訊、設定預設的網站首頁: *,選擇 node/1
進入英文,並選擇site-information,Default front page: * 選擇 node/2

5.進入效能清除快取,再回到首頁看看,切換中/英文是否皆能呈現

步驟參考參考

LeS謝謝您我照你的方式弄好了。
但有一個問題~有時后若在切換時,像我的中文頁面我都會再命名路徑名稱
它原先的路徑名是node/88但我重命名about好了~

但像如果使用者在看英文版時,再突然切回中文版~就會帶不到我命名路徑而是跑node/88,不然就是畫面中文版會參到英文選單~
不知你有無遇到這問題~~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

那麼意思是指我不要去使用pathauto去命名,就讓系統自已轉譯比較不會有我剛上述描述的狀況發生~是這意思嘛?

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

Les您好:
    我覺得我的語系切換還是有點卡卡的說~有時切來切去之間並無法完全切過去

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

而且這版型的部份啊~~就是我後來自已想了一下~~
就是啊~當加了這'theme_summertime_settings',
還得進入版型/設定/您的樣版~去將一些預設值勾選~之後就沒這錯的訊息出現了

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

想詢問像中英文版~是不是在node/頁數的名稱都得一樣才能直接翻譯呢?
因為我發覺node的id不同(中英文版)結果導致中英文頁都亂掉了~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

看完之後有個疑問....
要怎麼設定才能有
中文的node 內容,對應到顯示對應的英文的node內容?
是讓user在輸入中文後再輸入對應的英文node?
如果是要怎麼設定??