O objetivo é oferecer um botão / selecionar suspenso ou similar para alternar o idioma da interface pública 1) em tempo real.
O que estou procurando
- Código do plug-in ou do tema ...
- ... ou idéias
- É recomendável usar uma
load_textdomain()
solução alternativa para deixar a tradução em arquivos .po / .mo - Ideias sobre como analisar as seqüências de caracteres na interface (por exemplo, arquivos ajax / php simples / ini, json, xml) quando não depender de alguma função do domínio de texto
Nota:
1) Não se trata de publicar em idiomas diferentes.
2) Não preciso de código para fazer o menu suspenso / botão / o que for. É apenas sobre o código / sistema que entrega as strings para a interface do usuário.
Obrigado!
multi-language
translation
language
kaiser
fonte
fonte
WPLANG
constante pode ser uma opção. Estou fazendo isso em dois sites com conteúdo multilíngue, em que o plug-in multilíngue falha ao disparar a tradução da interface do usuário. Se tivesse que ser uma solução AJAX / JSON, não saberia como ajudar.Respostas:
De longe, a melhor (mais fácil) maneira é usar o filtro de localidade (interno
get_locale()
).Primeiro, configure uma função rápida para recuperar um idioma diferente para usar no
locale
filtro.Eu deixei isso como uma função global, pode ser útil ...? O resto do plug-in que envolvi em uma classe.
Ele cria uma lista suspensa de possíveis idiomas a partir dos quais você pode selecionar.
Desvantagens
wp-content/languages
por arquivos do formulárioxx_xx.mo
. Se não tiver esse formato (nem todos os arquivos .mo), o plug-in não será utilizado!$locale
algo diferente de idioma? Nesse caso, ainda é possível obter a localidade da mesma forma, mas forneça traduções alternativas. É muito mais bagunçado ...O código
fonte
'wp-admin/includes/ms.php'
aciona um aviso de administrador para atualizar os sites da sua rede (quando você é um único site!). Pode ser queformat_code_lang()
seja necessário duplicar dentro de uma função personalizada.Se você pode aceitar uma atualização da página, redefinir a
WPLANG
constante pode ser uma opção. Estou fazendo isso em dois sites com conteúdo multilíngue, em que o plug-in multilíngue falha ao disparar a tradução da interface do usuário.fonte
http://example.com/language/whatever/
, certo?$_SESSION
variável para acionar a redefiniçãoWPLANG
no próximo carregamento de página. Se você deseja replicar isso em um site multilíngue, observe que, como diz o comentário com o pastebin, o código nele funciona com o WPML, última versão gratuita. Ele não pode ser replicado 1 para 1 com qTranslate, porque esses URIs não são físicos, mas são reescritos através domod_rewrite
módulo apache. Tenho certeza de que pode ser ajustado, mas não funcionará "como está".$_SESSION
) Meu problema é que eles são muito difíceis de manusear e coisas entre globais e a matriz podem se misturar facilmente. Portanto, se eu tentar encontrar uma maneira de mudarWPLANG
, preciso encontrar uma maneira sólida de fazer isso de uma solicitação para outra. Talvezadd_query_arg/get_query_var
fará o truque ...http://www.qianqin.de/qtranslate/
é o que você precisa ...
Editar I - após o comentário. Primeiro - obrigado por todos os que contribuíram no downvotes torrent. (é o que acontece quando não se visita com frequência suficiente: -))
now - A função que lida com o switch está no qtranslate-core. (começa na linha 80 mais ou menos - depende da versão que você deseja).
Como você não pode procurar um código NOT OOP, e agora não tenho mais nada a fazer - levei 10 minutos para sintetizar, parafraseando a compilação desse non-OOp com outro código não-OOP.
(desculpe, - skool antigo primitivo aqui)
Supondo que eu entendi a pergunta && Supondo que você queira que o código seja para admin && assumindo que você saberá como portá-lo para o front-end se quiser && assumindo que entende que o código não é o ideal:
OBSERVAÇÕES:
1 - Este foi construído em 10 min. na máquina local enquanto estiver no aeroporto. A razão pela qual digo isso é que a única instalação pronta disponível do wordpress disponível aqui é bastante antiga. (2,9 eu acho).
Isso significa que provavelmente o menu de idiomas aparecerá SOB a ajuda contextual div, devido ao fato de uma nova estrutura div ter sido introduzida recentemente (com guias) - mas ainda assim deve funcionar. (Eu prometo voltar a isso mais tarde, se tiver tempo)
Se eu tivesse mais tempo (e um novo código wordpress aqui), provavelmente integraria isso na nova barra de administração com
add_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(eu já prometi voltar a isso)2 - você deve ter os arquivos de idiomas listados dentro da pasta "languages" em wp-content (better ??) ou wp-include. sobre esse ponto - o código é apenas uma prova de conceito - e, claro, se houver mais tempo, o menu deve ser construído de forma dinâmica e não como aqui.
3 - seu WPLANG na configuração deve estar vazio. Não tenho certeza se funcionará em versões mais recentes do wp se um idioma já estiver definido.
4 - é uma simples prova de conceito sintetizada e parafraseada, construída com base no que foi visto no código qtranslate (também versão antiga) - para que a maioria das coisas seja feita da maneira "rápida", não necessariamente da maneira "certa" (como adicionar JS , nenhum domínio de texto dedicado etc.).
EDIT II
alguém tem sorte hoje! (Atraso no voo)
Desde que você estava procurando "idéias" para abordagens, aqui está outra famosa.
Ele não se encaixa em um plug-in ou em qualquer outro ambiente não exclusivo, mas pode fornecer outra orientação sobre como lidar com o "material do navegador".
Isso permitirá obter o idioma com um GET como:
<a href="index.php?lang=de">German</a>
ou<a href="whatever.php?lang=ml">my Language</a>
Para usar, você pode criar um código (vamos chamá-lo de wp-langswitch.php)
Agora, no wp-config, logo antes da constante WPLANG, precisamos incluir nosso código.
Agora - obviamente, seria melhor adicionar alguns cookies à mistura para armazenar os idiomas.
EDIT III
Prometi voltar a isso mais tarde - eis como (de uma maneira muito incorreta e primitiva) ele poderia ser integrado dentro da barra de administração (em vez do menu de ajuda contextual)
Apenas substitua esta função (ou adicione) ao código antigo (o não plug-in NON-OOP original).
Como eu disse, eu não tenho uma nova instalação do wordpress aqui no local que apresenta o admin-bar - mas deve funcionar.
(e, novamente, pode não funcionar ... mas tenho certeza de que você pode corrigir isso se realmente quiser - mesmo que não seja OOP) :-)
tenho que correr agora. espero que ajude de alguma forma.
EDIT IV - alteração da edição III para a versão de trabalho da barra de menus do administrador (pelo menos no meu wp 3.4)
desde que eu não tinha uma instalação funcional do 3.4 - e agora voltei e o faço - editei a solução Edit III - e funciona para mim.
Sobre os votos, eu não poderia me importar menos. E não preciso de "recompensas" (sejam elas quais forem ..) Foi apenas por causa do exercício que talvez você devesse dar ao autor do qTranslate. :-) apesar de não ser OOP - é um plugin genial com muito o que aprender em muitas áreas. considerando o "quando" desta versão do plugin, é ainda incrível. vale o esforço indescritível de ler um código NÃO OOP - mesmo que não seja - OOP. E mesmo que não esteja corretamente recuado (bom Deus!).
fonte
require()
. Você não pode usardefine()
a mesma string duas vezes. O Edit III tem alguns problemas com os idiomas. Selecionaren_US
não faria nada (?), Masde_DE
configuraria paraEnglish
;). Para resumir: concedo recompensas e as dou a (por exemplo, StephenHarris) para obter uma resposta completa e funcional. Se você tiver algo assim, atualize sua resposta (abordagem interessante sobre cookies) e eu posso adicionar e recompensar você.