yii.translate

处理翻译的 Yii 模块。「Yii Module to handle translations」

  • 所有者: gusnips/yii.translate
  • 平台:
  • 許可證:
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Yii Module to handle translations

This extension collects all untranslated messages in the page and then you can add a button to translate, translate automatically using google translate, check for missing translations, edit translations and more.

Basic usage:

echo Yii::t('app','Some text').' - '.Yii::t('app','some other text');
Yii::app()->translate->editLink('Translate');

Setup

In your config :

<?php
return array(
    'preload'=>array('translate'),//either here or somewhere in the beginning
    //set up and import the module
    'modules'=>array(
        'translate'
    ),
    'import'=>array(
        'application.modules.translate.TranslateModule'
    ),
    'components'=>array(
        //define the class and its missingTranslation event
        'messages'=>array(
            'class'=>'CDbMessageSource',
            'onMissingTranslation' => array('TranslateModule', 'missingTranslation'),
        ),
        'translate'=>array(//if you name your component something else change TranslateModule
            'class'=>'translate.components.MPTranslate',
            //any avaliable options here
            'acceptedLanguages'=>array(
                  'en'=>'English',
                  'pt'=>'Portugues',
                  'es'=>'Español'
            ),
        ),
    )
);

Do not forget to create the tables like described here

the id of message source must be auto-incremental

the name of the tables can be modified

CREATE TABLE SourceMessage
(
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    category VARCHAR(32),
    message TEXT
);
CREATE TABLE Message
(
    id INTEGER,
    language VARCHAR(16),
    translation TEXT,
    PRIMARY KEY (id, language),
    CONSTRAINT FK_Message_SourceMessage FOREIGN KEY (id)
         REFERENCES SourceMessage (id) ON DELETE CASCADE ON UPDATE RESTRICT
);

How to use

Extract the file to protected/modules

somewhere in your application define the language like the following:

//shortcut
$translate=Yii::app()->translate;
//in your layout add
echo $translate->dropdown();
//adn this
if($translate->hasMessages()){
  //generates a to the page where you translate the missing translations found in this page
  echo $translate->translateLink('Translate');
  //or a dialog
  echo $translate->translateDialogLink('Translate','Translate page title');
}
//link to the page where you edit the translations
echo $translate->editLink('Edit translations page');
//link to the page where you check for all unstranslated messages of the system
echo $translate->missingLink('Missing translations page');

Options avaliable

string $defaultLanguage

defaults language to use if none is set.

if null, it will receive Yii target language

array $dialogOptions

options of the dialog

string $googleApiKey

your google translate api key.
set this if you wish to use googles translate service to translate the messages

array $acceptedLanguages

an array containing the languages accepted by your application.
if not set, it will receive an array containing the target language and the source language

boolean $autoTranslate

wheter to auto translate the missing messages found on the page. Defaults to false.
Needs google api key to set

boolean $autoSetLanguage

wheter to automatically set the language on the initialization of the component. Defaults to true.

##Methods avaliable

for the translate components
use it like this:

Yii::app()->translate->someMethod($someArg);

string getLanguage()

Returns the language in use.
The language is determined by many variables: session, post, get, header in this order.
It will filter the language by using accepted languages.
If is set "en_US" and it is not avaliable, then it will check if "en" is avaliable.

string setLanguage($language=null)

If $language is null then it will use getLanguage to determine it.
It doesn't check if the language is in the accepted languages.
Returns the language setted.

boolean hasMessage()

Return wheter there are messages to be translated in this page

string dropdown()

Returns a dropdown containing all accepted languages with an onchange event that will change the application's language.

string googleTranslate($message,$targetLanguage=null,$sourceLanguage=null)

Translate some message from $sourceLanguage to $targetLanguage using google translate api.
Option GoogleApiKey must be defined to use this service.

array getGoogleAcceptedLanguages($targetLanguage=null)

returns an array containing all languages accepted by google translate.
Option googleApiKey must be defined to use this service.

Generates a link or button to the page where you translate the missing translations found in this page

Generates a link or button that generates a dialog to the page where you translate the missing translations found in this page.

Creates a link to the page where you edit the translations.

Creates a link to the page where you check all missing translations

type for any link can be button or link

if you are running php 5.3 you can use any method like this

MPTranslate::someMethod($someArg);  

For TranslateModule :

MPTranslate translator()

returns the translate component

string t($message,$params=array())

used internally for the module to translate its content

string $translateComponentId

the id of the translate component. Defaults to 'translate'

##Version

0.2.5 24/07/2014

  • message and categories are now case-insensitive
  • fix page count in missing translate page

0.2.4: 29/08/2011

  • Fixed bug when no translation found.
  • Fixed typos in documentation.
  • Changed file encoding of all files to utf-8

0.2.3: 18/08/2011

  • LANGUAGE_KEY is now a constant named ID
  • Google errors are now logged instead of beeing treated as an exception

0.2.2: 23/05/2011

  • Fixed pagination in dialog and textarea size

0.2.1: 20/05/2011

  • Fixed some minor bugs

0.2: 18/05/2011

  • complete rewrite of the code to allow easier customization
  • added google translate support (thanks to Toshi)
  • added defaultLanguage (thanks to duna)
  • fixed a couple of minor bugs
  • added a lof of new funcionalities

0.1: 10/05/2011

  • first release

##Resources

Notes

This module will slow down your application, use it for development only

主要指標

概覽
名稱與所有者gusnips/yii.translate
主編程語言PHP
編程語言PHP (語言數: 1)
平台
許可證
所有者活动
創建於2011-08-15 15:34:56
推送於2014-08-01 01:17:15
最后一次提交2014-07-31 22:17:15
發布數0
用户参与
星數18
關注者數4
派生數9
提交數13
已啟用問題?
問題數7
打開的問題數2
拉請求數1
打開的拉請求數0
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?